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

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

Gibbets 2 Level Pack - improved version of Gibbets 2 with new levels.swf

This is the info page for
Flash #91781

(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

v1.04

Not Doppler
Highscore Submitter

Loading higscores...

Hide tips

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

Level      Completed!

Arrows used:

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>

Sorry, this game isn't available for public
distribution until October 7.
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>

Choose level

<p align="left"><font face="Cooper Std Black" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">3250000</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>

<p align="left"><font face="Cooper Std Black" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">easy</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>

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

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

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

Select difficulty

Easy

Normal

Hard

You will have a minimum number of
arrows on a hard level, and hangmans
will die quickly, but you will get
200% of scores for the resque.

You will always have medium number
of arrows on a medium level, and the
hangmans will die with a normal
speed. You will get 100% of scores
for the resque.

You will always have many arrows
on an easy difficulty level and
hangmans will die slowly, but you
will get only 50% of scores for the
resque.

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

10

30

Options

Invert control

Disable blood

Music volume

Sound volume

My name is Cyril
Morarenko.

Level

Failed !

Shooting accuracy:

<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">10:00</font></p>

Game paused

Click to continue

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>

<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

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

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

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

This bonus creates new
arrow.

10

5

This bonus throws
several arrows in
different
directions.

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

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

The bonus that
gives additional
arrows will help
us.

3

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

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

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

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

This bonus gives
you additional
score.

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

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.

Company in
distress makes
trouble less.

Are you doing
this on purpose?

That vulture is
looking at me in
a strange way.

I'll give you $100
if you don't do
that again.

The first part of
Gibbets was
better.

Do I look like
a target?

I feel like a
character of a
violent video game.

When I get
out of here, I
will sue you.

How
painful!

Stop it!

Robin Hood was
much more
skilled!

I love carrion.

I hate arrows.

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 Copy():b2Shape{ var _local1:b2Shape = new b2CircleShape(); _local1.Set(this); return (_local1); } 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 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))); } 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); } 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)); } 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 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); } public function GetLocalPosition():b2Vec2{ return (m_p); } public function SetLocalPosition(_arg1:b2Vec2):void{ m_p.SetV(_arg1); } public function GetRadius():Number{ return (m_radius); } public function SetRadius(_arg1:Number):void{ m_radius = _arg1; } } }//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 { private var s_supportVec:b2Vec2; b2internal var m_v1:b2Vec2; b2internal var m_v2:b2Vec2; b2internal var m_coreV1:b2Vec2; b2internal var m_coreV2:b2Vec2; b2internal var m_length:Number; b2internal var m_normal:b2Vec2; b2internal var m_direction:b2Vec2; b2internal var m_cornerDir1:b2Vec2; b2internal var m_cornerDir2:b2Vec2; b2internal var m_cornerConvex1:Boolean; b2internal var m_cornerConvex2:Boolean; b2internal var m_nextEdge:b2EdgeShape; b2internal var m_prevEdge:b2EdgeShape; 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 TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } 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 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; }; } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ _arg1.mass = 0; _arg1.center.SetV(m_v1); _arg1.I = 0; } 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))))); } public function GetLength():Number{ return (m_length); } public function GetVertex1():b2Vec2{ return (m_v1); } public function GetVertex2():b2Vec2{ return (m_v2); } public function GetCoreVertex1():b2Vec2{ return (m_coreV1); } public function GetCoreVertex2():b2Vec2{ return (m_coreV2); } public function GetNormalVector():b2Vec2{ return (m_normal); } public function GetDirectionVector():b2Vec2{ return (m_direction); } public function GetCorner1Vector():b2Vec2{ return (m_cornerDir1); } public function GetCorner2Vector():b2Vec2{ return (m_cornerDir2); } public function Corner1IsConvex():Boolean{ return (m_cornerConvex1); } public function Corner2IsConvex():Boolean{ return (m_cornerConvex2); } 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 GetNextEdge():b2EdgeShape{ return (m_nextEdge); } public function GetPrevEdge():b2EdgeShape{ return (m_prevEdge); } 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 SetPrevEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_prevEdge = _arg1; m_coreV1 = _arg2; m_cornerDir1 = _arg3; m_cornerConvex1 = _arg4; } b2internal function SetNextEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_nextEdge = _arg1; m_coreV2 = _arg2; m_cornerDir2 = _arg3; m_cornerConvex2 = _arg4; } } }//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_centroid:b2Vec2; b2internal var m_vertices:Array; b2internal var m_normals:Array; b2internal var m_vertexCount:int; 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 Copy():b2Shape{ var _local1:b2PolygonShape = new b2PolygonShape(); _local1.Set(this); return (_local1); } 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++; }; }; } 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); } 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 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(); } 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++; }; } 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); } 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); } 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 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 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); } 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 GetVertexCount():int{ return (m_vertexCount); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } 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]); } private function Validate():Boolean{ return (false); } 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 static function AsArray(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsArray(_arg1, _arg2); return (_local3); } public static function AsVector(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsVector(_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 AsEdge(_arg1:b2Vec2, _arg2:b2Vec2):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsEdge(_arg1, _arg2); return (_local3); } 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); } 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++; }; } } }//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_type:int; b2internal var m_radius:Number; b2internal static const e_unknownShape:int = -1; b2internal static const e_circleShape:int = 0; b2internal static const e_polygonShape:int = 1; b2internal static const e_edgeShape:int = 2; b2internal static const e_shapeTypeCount:int = 3; public static const e_hitCollide:int = 1; public static const e_missCollide:int = 0; public static const e_startsInsideCollide:int = -1; public function b2Shape(){ m_type = e_unknownShape; m_radius = b2Settings.b2_linearSlop; } public function Copy():b2Shape{ return (null); } public function Set(_arg1:b2Shape):void{ m_radius = _arg1.m_radius; } public function GetType():int{ return (m_type); } public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ return (false); } public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ } public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ } public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ return (0); } 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 lowerBound:b2Vec2; public var upperBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } 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 GetCenter():b2Vec2{ return (new b2Vec2(((lowerBound.x + upperBound.x) / 2), ((lowerBound.y + upperBound.y) / 2))); } public function GetExtents():b2Vec2{ return (new b2Vec2(((upperBound.x - lowerBound.x) / 2), ((upperBound.y - lowerBound.y) / 2))); } 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 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 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 s_incidentEdge:Array = MakeClipPointVector(); private static var s_clipPoints1:Array = MakeClipPointVector(); private static var s_clipPoints2:Array = MakeClipPointVector(); private static var s_edgeAO:Array = new Array(1); private static var s_edgeBO:Array = new Array(1); private static var s_localTangent:b2Vec2 = new b2Vec2(); private static var s_localNormal:b2Vec2 = new b2Vec2(); private static var s_planePoint:b2Vec2 = new b2Vec2(); private static var s_normal:b2Vec2 = new b2Vec2(); private static var s_tangent:b2Vec2 = new b2Vec2(); private static var s_tangent2:b2Vec2 = new b2Vec2(); private static var s_v11:b2Vec2 = new b2Vec2(); private static var s_v12:b2Vec2 = new b2Vec2(); private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); 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); } 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 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 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; } private static function MakeClipPointVector():Array{ var _local1:Array = new Array(2); _local1[0] = new ClipVertex(); _local1[1] = new ClipVertex(); return (_local1); } 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 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 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 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 { public var features:Features; b2internal var _key:uint; 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 get key():uint{ return (_key); } 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); } } }//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 shape1:b2Shape; public var shape2:b2Shape; public var position:b2Vec2; public var velocity:b2Vec2; public var normal:b2Vec2; public var separation:Number; public var friction:Number; public var restitution:Number; public var id:b2ContactID; 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_gjkCalls:int; private static var b2_gjkIters:int; private static var b2_gjkMaxIters:int; private static var s_simplex:b2Simplex = new b2Simplex(); private static var s_saveA:Array = new Array(3); private static var s_saveB: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 pointB:b2Vec2; public var distance:Number; public var iterations:int; 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_vertices:Array; public var m_count:int; public var m_radius:Number; 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 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); } 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 GetVertex(_arg1:int):b2Vec2{ b2Settings.b2Assert((((0 <= _arg1)) && ((_arg1 < m_count)))); return (m_vertices[_arg1]); } } }//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_root:b2DynamicTreeNode; private var m_freeList:b2DynamicTreeNode; private var m_path:uint; private var m_insertionCount:int; public function b2DynamicTree(){ m_root = null; m_freeList = null; m_path = 0; m_insertionCount = 0; } 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); } 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); } 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 GetFatAABB(_arg1:b2DynamicTreeNode):b2AABB{ return (_arg1.aabb); } public function GetUserData(_arg1:b2DynamicTreeNode){ return (_arg1.userData); } 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; }; }; }; }; } 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()); } private function FreeNode(_arg1:b2DynamicTreeNode):void{ _arg1.parent = m_freeList; m_freeList = _arg1; } private function InsertLeaf(_arg1:b2DynamicTreeNode):void{ var _local6:b2DynamicTreeNode; var _local7:b2DynamicTreeNode; var _local8:Number; var _local9:Number; 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; }; } 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); }; } } }//package Box2D.Collision
Section 15
//b2DynamicTreeBroadPhase (Box2D.Collision.b2DynamicTreeBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DynamicTreeBroadPhase implements IBroadPhase { private var m_tree:b2DynamicTree; private var m_proxyCount:int; private var m_moveBuffer:Array; private var m_pairBuffer:Array; private var m_pairCount:int;// = 0 public function b2DynamicTreeBroadPhase(){ m_tree = new b2DynamicTree(); m_moveBuffer = new Array(); m_pairBuffer = new Array(); super(); } public function CreateProxy(_arg1:b2AABB, _arg2){ var _local3:b2DynamicTreeNode = m_tree.CreateProxy(_arg1, _arg2); m_proxyCount++; BufferMove(_local3); return (_local3); } 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); }; } 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 GetUserData(_arg1){ return (m_tree.GetUserData(_arg1)); } public function GetFatAABB(_arg1):b2AABB{ return (m_tree.GetFatAABB(_arg1)); } public function GetProxyCount():int{ return (m_proxyCount); } 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 Query(_arg1:Function, _arg2:b2AABB):void{ m_tree.Query(_arg1, _arg2); } public function RayCast(_arg1:Function, _arg2:b2RayCastInput):void{ m_tree.RayCast(_arg1, _arg2); } public function Validate():void{ } public function Rebalance(_arg1:int):void{ m_tree.Rebalance(_arg1); } private function BufferMove(_arg1:b2DynamicTreeNode):void{ m_moveBuffer[m_moveBuffer.length] = _arg1; } private function UnBufferMove(_arg1:b2DynamicTreeNode):void{ var _local2:int = m_moveBuffer.indexOf(_arg1); m_moveBuffer.splice(_local2, 1); } private function ComparePairs(_arg1:b2DynamicTreePair, _arg2:b2DynamicTreePair):int{ return (0); } } }//package Box2D.Collision
Section 16
//b2DynamicTreeNode (Box2D.Collision.b2DynamicTreeNode) package Box2D.Collision { public class b2DynamicTreeNode { public var userData; public var aabb:b2AABB; public var parent:b2DynamicTreeNode; public var child1:b2DynamicTreeNode; public var child2: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_points:Array; public var m_localPlaneNormal:b2Vec2; public var m_localPoint:b2Vec2; public var m_type:int; public var m_pointCount:int;// = 0 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 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 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 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_normalImpulse:Number; public var m_tangentImpulse:Number; public var m_id:b2ContactID; public function b2ManifoldPoint(){ m_localPoint = new b2Vec2(); m_id = new b2ContactID(); super(); Reset(); } public function Reset():void{ m_localPoint.SetZero(); m_normalImpulse = 0; m_tangentImpulse = 0; m_id.key = 0; } 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); } } }//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 p2:b2Vec2; public var maxFraction:Number; 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 normal:b2Vec2; public var fraction:Number; 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_localPoint:b2Vec2; public var m_axis:b2Vec2; public static const e_points:int = 1; public static const e_faceA:int = 2; public static const e_faceB:int = 4; 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 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 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 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 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()); }; } 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 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 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; } } }//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 indexA:Array; public var indexB: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 wA:b2Vec2; public var wB:b2Vec2; public var w:b2Vec2; public var a:Number; public var indexA:int; public var indexB:int; 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 b2_toiIters:int = 0; private static var b2_toiMaxIters:int = 0; private static var b2_toiRootIters:int = 0; private static var b2_toiMaxRootIters:int = 0; private static var s_cache:b2SimplexCache = new b2SimplexCache(); private static var s_distanceInput:b2DistanceInput = new b2DistanceInput(); private static var s_xfA:b2Transform = new b2Transform(); private static var s_xfB:b2Transform = new b2Transform(); private static var s_fcn:b2SeparationFunction = new b2SeparationFunction(); private static var s_distanceOutput:b2DistanceOutput = new b2DistanceOutput(); 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 v:b2Vec2; public var id:b2ContactID; 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 _incidentVertex:int; b2internal var _flip:int; b2internal var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentEdge():int{ return (_incidentEdge); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } public function get incidentVertex():int{ return (_incidentVertex); } 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 set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } } }//package Box2D.Collision
Section 32
//IBroadPhase (Box2D.Collision.IBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public interface IBroadPhase { function CreateProxy(_arg1:b2AABB, _arg2); function DestroyProxy(_arg1):void; function MoveProxy(_arg1, _arg2:b2AABB, _arg3:b2Vec2):void; function TestOverlap(_arg1, _arg2):Boolean; function GetUserData(_arg1); function GetFatAABB(_arg1):b2AABB; function GetProxyCount():int; function UpdatePairs(_arg1:Function):void; function Query(_arg1:Function, _arg2:b2AABB):void; function RayCast(_arg1:Function, _arg2:b2RayCastInput):void; function Validate():void; function Rebalance(_arg1:int):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 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 SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Copy():b2Mat22{ var _local1:b2Mat22 = new b2Mat22(); _local1.SetM(this); return (_local1); } 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 SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } 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 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 function Abs():void{ col1.Abs(); col2.Abs(); } 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 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 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 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 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 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 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 b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static const b2Mat22_identity:b2Mat22 = b2Mat22.FromVV(new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2Transform_identity:b2Transform = new b2Transform(b2Vec2_zero, b2Mat22_identity); public static function IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } 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 CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } 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 MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Dot(_arg2, _arg1.col1), Dot(_arg2, _arg1.col2)); return (_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 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 AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } 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 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 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 MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); 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 MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = b2Mat22.FromVV(MulMV(_arg1, _arg2.col1), MulMV(_arg1, _arg2.col2)); return (_local3); } 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 Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(Abs(_arg1.x), Abs(_arg1.y)); return (_local2); } public static function AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = b2Mat22.FromVV(AbsV(_arg1.col1), AbsV(_arg1.col2)); return (_local2); } public static function Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } 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 Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } 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 Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (((_arg1 < _arg2)) ? _arg2 : ((_arg1 > _arg3)) ? _arg3 : _arg1); } public static function ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (MaxV(_arg2, MinV(_arg1, _arg3))); } public static function Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function Random():Number{ return (((Math.random() * 2) - 1)); } public static function RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); 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 IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } } }//package Box2D.Common.Math
Section 36
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c0:b2Vec2; public var c:b2Vec2; public var a0:Number; public var a:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } 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))); } 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; }; } } }//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 SetIdentity():void{ position.SetZero(); R.SetIdentity(); } public function Set(_arg1:b2Transform):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } 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 SetZero():void{ x = 0; y = 0; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function GetNegative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function NegativeSelf():void{ x = -(x); y = -(y); } public function toString():String{ return (((("b2Vec2 x=" + x) + " y=") + y)); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } 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 MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.Dot(this, _arg1.col1); y = b2Math.Dot(this, _arg1.col2); x = _local2; } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.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 Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((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 IsValid():Boolean{ return (((b2Math.IsValid(x)) && (b2Math.IsValid(y)))); } public function toVector3():Vector3{ return (new Vector3(x, y, 0)); } 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 SetZero():void{ x = (y = (z = 0)); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function SetV(_arg1:b2Vec3):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; } public function GetNegative():b2Vec3{ return (new b2Vec3(-(x), -(y), -(z))); } public function NegativeSelf():void{ x = -(x); y = -(y); z = -(z); } public function Copy():b2Vec3{ return (new b2Vec3(x, y, z)); } public function Add(_arg1:b2Vec3):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function Subtract(_arg1:b2Vec3):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } } }//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 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))); } 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)); } } }//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 VERSION:String = "2.1alpha"; public static const USHRT_MAX:int = 0xFFFF; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxManifoldPoints:int = 2; public static const b2_aabbExtension:Number = 0.1; public static const b2_aabbMultiplier:Number = 2; public static const b2_polygonRadius:Number = (2 * b2_linearSlop); public static const b2_linearSlop:Number = 0.005; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_toiSlop:Number = 0.04; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_maxTOIJointsPerIsland:int = 32; public static const b2_velocityThreshold:Number = 1; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const b2_maxTranslation:Number = 2; public static const b2_maxTranslationSquared:Number = 4; public static const b2_maxRotation:Number = 1.5707963267949; public static const b2_maxRotationSquared:Number = 2.46740110027234; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_timeToSleep:Number = 0.5; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSleepTolerance:Number = 0.0349065850398866; 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 { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } 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 static function Create(_arg1):b2Contact{ return (new (b2CircleContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//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_flags:uint; b2internal var m_prev:b2Contact; b2internal var m_next:b2Contact; b2internal var m_nodeA:b2ContactEdge; b2internal var m_nodeB:b2ContactEdge; b2internal var m_fixtureA:b2Fixture; b2internal var m_fixtureB:b2Fixture; b2internal var m_manifold:b2Manifold; b2internal var m_oldManifold:b2Manifold; b2internal var m_toi:Number; b2internal static var e_sensorFlag:uint = 1; b2internal static var e_continuousFlag:uint = 2; b2internal static var e_islandFlag:uint = 4; b2internal static var e_toiFlag:uint = 8; b2internal static var e_touchingFlag:uint = 16; b2internal static var e_enabledFlag:uint = 32; b2internal static var e_filterFlag:uint = 64; private static var s_input:b2TOIInput = new b2TOIInput(); public function b2Contact(){ m_nodeA = new b2ContactEdge(); m_nodeB = new b2ContactEdge(); m_manifold = new b2Manifold(); m_oldManifold = new b2Manifold(); super(); } public function GetManifold():b2Manifold{ return (m_manifold); } 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 IsContinuous():Boolean{ return (((m_flags & e_continuousFlag) == e_continuousFlag)); } public function SetSensor(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_sensorFlag); } else { m_flags = (m_flags & ~(e_sensorFlag)); }; } public function IsSensor():Boolean{ return (((m_flags & e_sensorFlag) == 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 IsEnabled():Boolean{ return (((m_flags & e_enabledFlag) == e_enabledFlag)); } public function GetNext():b2Contact{ return (m_next); } public function GetFixtureA():b2Fixture{ return (m_fixtureA); } public function GetFixtureB():b2Fixture{ return (m_fixtureB); } public function FlagForFiltering():void{ m_flags = (m_flags | e_filterFlag); } 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 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); }; } b2internal function Evaluate():void{ } 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)); } } }//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 points:Array; public var localPlaneNormal:b2Vec2; public var localPoint:b2Vec2; public var normal:b2Vec2; public var normalMass:b2Mat22; public var K:b2Mat22; public var bodyA:b2Body; public var bodyB:b2Body; public var type:int; public var radius:Number; public var friction:Number; public var restitution:Number; public var pointCount:int; public var manifold:b2Manifold; 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 rA:b2Vec2; public var rB:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var normalMass:Number; public var tangentMass:Number; public var equalizedMass: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 contact:b2Contact; public var prev:b2ContactEdge; 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_registers:Array; private var m_allocator; public function b2ContactFactory(_arg1){ m_allocator = _arg1; InitializeRegisters(); } 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; }; } 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 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); } 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); } } }//package Box2D.Dynamics.Contacts
Section 49
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var createFcn:Function; public var destroyFcn:Function; public var primary:Boolean; public var pool:b2Contact; public var poolCount:int; } }//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_step:b2TimeStep; private var m_allocator; b2internal var m_constraints:Array; private var m_constraintCount:int; private static var s_worldManifold:b2WorldManifold = new b2WorldManifold(); private static var s_psm:b2PositionSolverManifold = new b2PositionSolverManifold(); public function b2ContactSolver(){ m_step = new b2TimeStep(); m_constraints = new Array(); super(); } 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 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 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++; }; } 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))); } } }//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 { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } 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 static function Create(_arg1):b2Contact{ return (new (b2EdgeAndCircleContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//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 { 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)); } 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 static function Create(_arg1):b2Contact{ return (new (b2PolyAndCircleContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//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 { 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)); } 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 static function Create(_arg1):b2Contact{ return (new (b2PolyAndEdgeContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//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 { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } 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 static function Create(_arg1):b2Contact{ return (new (b2PolygonContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//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_normal:b2Vec2; public var m_points:Array; 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_next:b2Controller; b2internal var m_prev:b2Controller; protected var m_bodyList:b2ControllerEdge; protected var m_bodyCount:int; b2internal var m_world:b2World; public function Step(_arg1:b2TimeStep):void{ } public function Draw(_arg1:b2DebugDraw):void{ } 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 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 Clear():void{ while (m_bodyList) { RemoveBody(m_bodyList.body); }; } public function GetNext():b2Controller{ return (m_next); } public function GetWorld():b2World{ return (m_world); } public function GetBodyList():b2ControllerEdge{ return (m_bodyList); } } }//package Box2D.Dynamics.Controllers
Section 57
//b2ControllerEdge (Box2D.Dynamics.Controllers.b2ControllerEdge) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; public class b2ControllerEdge { public var controller:b2Controller; public var body:b2Body; public var prevBody:b2ControllerEdge; public var nextBody:b2ControllerEdge; public var prevController:b2ControllerEdge; public var nextController:b2ControllerEdge; } }//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_u:b2Vec2; private var m_frequencyHz:Number; private var m_dampingRatio:Number; private var m_gamma:Number; private var m_bias:Number; private var m_impulse:Number; private var m_mass:Number; private var m_length: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; } 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 GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u.x), ((_arg1 * m_impulse) * m_u.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetLength():Number{ return (m_length); } public function SetLength(_arg1:Number):void{ m_length = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function GetDampingRatio():Number{ return (m_dampingRatio); } public function SetDampingRatio(_arg1:Number):void{ m_dampingRatio = _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; }; } 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)))); } 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)); } } }//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 localAnchorB:b2Vec2; public var length:Number; public var frequencyHz:Number; public var dampingRatio: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_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; public var m_linearMass:b2Mat22; public var m_angularMass:Number; private var m_linearImpulse:b2Vec2; private var m_angularImpulse:Number; private var m_maxForce:Number; private var m_maxTorque:Number; 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; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_linearImpulse.x), (_arg1 * m_linearImpulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_angularImpulse)); } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } public function GetMaxForce():Number{ return (m_maxForce); } public function SetMaxTorque(_arg1:Number):void{ m_maxTorque = _arg1; } public function GetMaxTorque():Number{ return (m_maxTorque); } 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 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 b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } } }//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 localAnchorB:b2Vec2; public var maxForce:Number; public var maxTorque:Number; 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_ground1:b2Body; private var m_ground2:b2Body; private var m_revolute1:b2RevoluteJoint; private var m_prismatic1:b2PrismaticJoint; private var m_revolute2:b2RevoluteJoint; private var m_prismatic2:b2PrismaticJoint; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_J:b2Jacobian; private var m_constant:Number; private var m_ratio:Number; private var m_mass:Number; private var m_impulse:Number; 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 public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } 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 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); } public function SetRatio(_arg1:Number):void{ m_ratio = _arg1; } 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 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)); } } }//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 linearA:b2Vec2; public var angularA:Number; public var linearB:b2Vec2; public var angularB:Number; public function b2Jacobian(){ linearA = new b2Vec2(); linearB = new b2Vec2(); super(); } public function SetZero():void{ linearA.SetZero(); angularA = 0; linearB.SetZero(); angularB = 0; } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linearA.SetV(_arg1); angularA = _arg2; linearB.SetV(_arg3); angularB = _arg4; } 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_type:int; b2internal var m_prev:b2Joint; b2internal var m_next:b2Joint; b2internal var m_edgeA:b2JointEdge; b2internal var m_edgeB:b2JointEdge; b2internal var m_bodyA:b2Body; b2internal var m_bodyB:b2Body; b2internal var m_islandFlag:Boolean; b2internal var m_collideConnected:Boolean; private var m_userData; b2internal var m_localCenterA:b2Vec2; b2internal var m_localCenterB:b2Vec2; b2internal var m_invMassA:Number; b2internal var m_invMassB:Number; b2internal var m_invIA:Number; b2internal var m_invIB:Number; b2internal static const e_unknownJoint:int = 0; b2internal static const e_revoluteJoint:int = 1; b2internal static const e_prismaticJoint:int = 2; b2internal static const e_distanceJoint:int = 3; b2internal static const e_pulleyJoint:int = 4; b2internal static const e_mouseJoint:int = 5; b2internal static const e_gearJoint:int = 6; b2internal static const e_lineJoint:int = 7; b2internal static const e_weldJoint:int = 8; b2internal static const e_frictionJoint:int = 9; b2internal static const e_inactiveLimit:int = 0; b2internal static const e_atLowerLimit:int = 1; b2internal static const e_atUpperLimit:int = 2; b2internal static const e_equalLimits:int = 3; 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; } public function GetType():int{ return (m_type); } public function GetAnchorA():b2Vec2{ return (null); } public function GetAnchorB():b2Vec2{ return (null); } public function GetReactionForce(_arg1:Number):b2Vec2{ return (null); } public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetBodyA():b2Body{ return (m_bodyA); } public function GetBodyB():b2Body{ return (m_bodyB); } public function GetNext():b2Joint{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function IsActive():Boolean{ return (((m_bodyA.IsActive()) && (m_bodyB.IsActive()))); } b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ } b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } b2internal function FinalizeVelocityConstraints():void{ } b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (false); } 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); } b2internal static function Destroy(_arg1:b2Joint, _arg2):void{ } } }//package Box2D.Dynamics.Joints
Section 66
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var type:int; public var userData; public var bodyA:b2Body; public var bodyB:b2Body; public var collideConnected:Boolean; 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 joint:b2Joint; public var prev:b2JointEdge; public var next:b2JointEdge; } }//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 { b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; b2internal var m_localXAxis1:b2Vec2; private var m_localYAxis1:b2Vec2; private var m_axis:b2Vec2; private var m_perp:b2Vec2; private var m_s1:Number; private var m_s2:Number; private var m_a1:Number; private var m_a2:Number; private var m_K:b2Mat22; private var m_impulse:b2Vec2; private var m_motorMass:Number; private var m_motorImpulse:Number; private var m_lowerTranslation:Number; private var m_upperTranslation:Number; private var m_maxMotorForce:Number; private var m_motorSpeed:Number; private var m_enableLimit:Boolean; private var m_enableMotor:Boolean; private var m_limitState:int; 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 public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } 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 public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } 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 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); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function GetMaxMotorForce():Number{ return (m_maxMotorForce); } public function GetMotorForce():Number{ return (m_motorImpulse); } 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; }; } 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; } 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)))); } } }//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 localAxisA:b2Vec2; public var enableLimit:Boolean; public var lowerTranslation:Number; public var upperTranslation:Number; public var enableMotor:Boolean; public var maxMotorForce:Number; public var motorSpeed: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 K:b2Mat22; private var K1:b2Mat22; private var K2:b2Mat22; private var m_localAnchor:b2Vec2; private var m_target:b2Vec2; private var m_impulse:b2Vec2; private var m_mass:b2Mat22; private var m_C:b2Vec2; private var m_maxForce:Number; private var m_frequencyHz:Number; private var m_dampingRatio:Number; private var m_beta:Number; private var m_gamma: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; } override public function GetAnchorA():b2Vec2{ return (m_target); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetTarget():b2Vec2{ return (m_target); } public function SetTarget(_arg1:b2Vec2):void{ if (m_bodyB.IsAwake() == false){ m_bodyB.SetAwake(true); }; m_target = _arg1; } public function GetMaxForce():Number{ return (m_maxForce); } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function GetDampingRatio():Number{ return (m_dampingRatio); } 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 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)))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } } }//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 frequencyHz:Number; public var dampingRatio: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 { b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; b2internal var m_localXAxis1:b2Vec2; private var m_localYAxis1:b2Vec2; private var m_refAngle:Number; private var m_axis:b2Vec2; private var m_perp:b2Vec2; private var m_s1:Number; private var m_s2:Number; private var m_a1:Number; private var m_a2:Number; private var m_K:b2Mat33; private var m_impulse:b2Vec3; private var m_motorMass:Number; private var m_motorImpulse:Number; private var m_lowerTranslation:Number; private var m_upperTranslation:Number; private var m_maxMotorForce:Number; private var m_motorSpeed:Number; private var m_enableLimit:Boolean; private var m_enableMotor:Boolean; private var m_limitState:int; 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 public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } 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 public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } 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 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); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function GetMotorForce():Number{ return (m_motorImpulse); } 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; }; } 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; } 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)))); } } }//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 localAnchorB:b2Vec2; public var localAxisA:b2Vec2; public var referenceAngle:Number; public var enableLimit:Boolean; public var lowerTranslation:Number; public var upperTranslation:Number; public var enableMotor:Boolean; public var maxMotorForce:Number; public var motorSpeed: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_ground:b2Body; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_u1:b2Vec2; private var m_u2:b2Vec2; private var m_constant:Number; private var m_ratio:Number; private var m_maxLength1:Number; private var m_maxLength2:Number; private var m_pulleyMass:Number; private var m_limitMass1:Number; private var m_limitMass2:Number; private var m_impulse:Number; private var m_limitImpulse1:Number; private var m_limitImpulse2:Number; private var m_state:int; private var m_limitState1:int; private var m_limitState2:int; 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; } 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 GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u2.x), ((_arg1 * m_impulse) * m_u2.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetGroundAnchorA():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } public function GetGroundAnchorB():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } 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)))); } 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)))); } public function GetRatio():Number{ return (m_ratio); } 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 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)))); }; } 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)); } } }//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 groundAnchorA:b2Vec2; public var groundAnchorB:b2Vec2; public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var lengthA:Number; public var maxLengthA:Number; public var lengthB:Number; public var maxLengthB:Number; public var ratio: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 K:b2Mat22; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var impulse3:b2Vec3; private var impulse2:b2Vec2; private var reduced:b2Vec2; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_impulse:b2Vec3; private var m_motorImpulse:Number; private var m_mass:b2Mat33; private var m_motorMass:Number; private var m_enableMotor:Boolean; private var m_maxMotorTorque:Number; private var m_motorSpeed:Number; private var m_enableLimit:Boolean; private var m_referenceAngle:Number; private var m_lowerAngle:Number; private var m_upperAngle:Number; private var m_limitState:int; 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 public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } 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 IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function IsMotorEnabled():Boolean{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } 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; }; } 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; } 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)))); } } }//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 localAnchorB:b2Vec2; public var referenceAngle:Number; public var enableLimit:Boolean; public var lowerAngle:Number; public var upperAngle:Number; public var enableMotor:Boolean; public var motorSpeed:Number; 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_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; private var m_referenceAngle:Number; private var m_impulse:b2Vec3; 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 public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } 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 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 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)))); } } }//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 localAnchorB:b2Vec2; public var referenceAngle:Number; 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_flags:uint; b2internal var m_type:int; b2internal var m_islandIndex:int; b2internal var m_xf:b2Transform; b2internal var m_sweep:b2Sweep; b2internal var m_linearVelocity:b2Vec2; b2internal var m_angularVelocity:Number; b2internal var m_force:b2Vec2; b2internal var m_torque:Number; b2internal var m_world:b2World; b2internal var m_prev:b2Body; b2internal var m_next:b2Body; b2internal var m_fixtureList:b2Fixture; b2internal var m_fixtureCount:int; b2internal var m_controllerList:b2ControllerEdge; b2internal var m_controllerCount:int; b2internal var m_jointList:b2JointEdge; b2internal var m_contactList:b2ContactEdge; b2internal var m_mass:Number; b2internal var m_invMass:Number; b2internal var m_I:Number; b2internal var m_invI:Number; b2internal var m_inertiaScale:Number; b2internal var m_linearDamping:Number; b2internal var m_angularDamping:Number; b2internal var m_sleepTime:Number; private var m_userData; private static var s_xf1:b2Transform = new b2Transform(); b2internal static var e_islandFlag:uint = 1; b2internal static var e_awakeFlag:uint = 2; b2internal static var e_allowSleepFlag:uint = 4; b2internal static var e_bulletFlag:uint = 8; b2internal static var e_fixedRotationFlag:uint = 16; b2internal static var e_activeFlag:uint = 32; public static var b2_staticBody:uint = 0; public static var b2_kinematicBody:uint = 1; public static var b2_dynamicBody:uint = 2; 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; } 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 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 CreateFixture2(_arg1:b2Shape, _arg2:Number=0):b2Fixture{ var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = _arg1; _local3.density = _arg2; return (CreateFixture(_local3)); } 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 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 SetTransform(_arg1:b2Transform):void{ SetPositionAndAngle(_arg1.position, _arg1.GetAngle()); } public function GetTransform():b2Transform{ return (m_xf); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function SetPosition(_arg1:b2Vec2):void{ SetPositionAndAngle(_arg1, GetAngle()); } public function GetAngle():Number{ return (m_sweep.a); } public function SetAngle(_arg1:Number):void{ SetPositionAndAngle(GetPosition(), _arg1); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetLinearVelocity(_arg1:b2Vec2):void{ if (m_type == b2_staticBody){ return; }; m_linearVelocity.SetV(_arg1); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SetAngularVelocity(_arg1:Number):void{ if (m_type == b2_staticBody){ return; }; m_angularVelocity = _arg1; } public function GetAngularVelocity():Number{ return (m_angularVelocity); } 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 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 ApplyTorque(_arg1:Number):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_torque = (m_torque + _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 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 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(); } public function GetMass():Number{ return (m_mass); } public function GetInertia():Number{ return (m_I); } public function GetMassData(_arg1:b2MassData):void{ _arg1.mass = m_mass; _arg1.I = m_I; _arg1.center.SetV(m_sweep.localCenter); } 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 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 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 GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulMV(m_xf.R, _arg1)); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulXT(m_xf, _arg1)); } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulTMV(m_xf.R, _arg1)); } 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 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 GetLinearDamping():Number{ return (m_linearDamping); } public function SetLinearDamping(_arg1:Number):void{ m_linearDamping = _arg1; } public function GetAngularDamping():Number{ return (m_angularDamping); } public function SetAngularDamping(_arg1:Number):void{ m_angularDamping = _arg1; } 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 GetType():uint{ return (m_type); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } 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 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 IsAwake():Boolean{ return (((m_flags & e_awakeFlag) == e_awakeFlag)); } public function SetFixedRotation(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_fixedRotationFlag); } else { m_flags = (m_flags & ~(e_fixedRotationFlag)); }; ResetMassData(); } 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)); } public function IsSleepingAllowed():Boolean{ return (((m_flags & e_allowSleepFlag) == e_allowSleepFlag)); } public function GetFixtureList():b2Fixture{ return (m_fixtureList); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetControllerList():b2ControllerEdge{ return (m_controllerList); } public function GetContactList():b2ContactEdge{ return (m_contactList); } public function GetNext():b2Body{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetWorld():b2World{ return (m_world); } 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; }; } 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))); } 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); } b2internal function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } } }//package Box2D.Dynamics
Section 81
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; public class b2BodyDef { public var type:uint; public var position:b2Vec2; public var angle:Number; public var linearVelocity:b2Vec2; public var angularVelocity:Number; public var linearDamping:Number; public var angularDamping:Number; public var allowSleep:Boolean; public var awake:Boolean; public var fixedRotation:Boolean; public var bullet:Boolean; public var active:Boolean; public var userData; public var inertiaScale:Number; 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 normalImpulses:Array; public var tangentImpulses: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 BeginContact(_arg1:b2Contact):void{ } public function EndContact(_arg1:b2Contact):void{ } public function PreSolve(_arg1:b2Contact, _arg2:b2Manifold):void{ } public function PostSolve(_arg1:b2Contact, _arg2:b2ContactImpulse):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_broadPhase:IBroadPhase; b2internal var m_contactList:b2Contact; b2internal var m_contactCount:int; b2internal var m_contactFilter:b2ContactFilter; b2internal var m_contactListener:b2ContactListener; b2internal var m_contactFactory:b2ContactFactory; 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 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 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 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_drawFlags:uint; b2internal var m_sprite:Sprite; private var m_drawScale:Number;// = 1 private var m_lineThickness:Number;// = 1 private var m_alpha:Number;// = 1 private var m_fillAlpha:Number;// = 1 private var m_xformScale:Number;// = 1 public static var e_shapeBit:uint = 1; public static var e_jointBit:uint = 2; public static var e_aabbBit:uint = 4; public static var e_pairBit:uint = 8; public static var e_centerOfMassBit:uint = 16; public static var e_controllerBit:uint = 32; public function b2DebugDraw(){ m_drawFlags = 0; } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function GetFlags():uint{ return (m_drawFlags); } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function SetSprite(_arg1:Sprite):void{ m_sprite = _arg1; } public function GetSprite():Sprite{ return (m_sprite); } public function SetDrawScale(_arg1:Number):void{ m_drawScale = _arg1; } public function GetDrawScale():Number{ return (m_drawScale); } public function SetLineThickness(_arg1:Number):void{ m_lineThickness = _arg1; } public function GetLineThickness():Number{ return (m_lineThickness); } public function SetAlpha(_arg1:Number):void{ m_alpha = _arg1; } public function GetAlpha():Number{ return (m_alpha); } public function SetFillAlpha(_arg1:Number):void{ m_fillAlpha = _arg1; } public function GetFillAlpha():Number{ return (m_fillAlpha); } public function SetXFormScale(_arg1:Number):void{ m_xformScale = _arg1; } public function GetXFormScale():Number{ return (m_xformScale); } 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 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 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 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)); } } }//package Box2D.Dynamics
Section 87
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeFixture(_arg1:b2Fixture):void{ } } }//package Box2D.Dynamics
Section 88
//b2FilterData (Box2D.Dynamics.b2FilterData) package Box2D.Dynamics { public class b2FilterData { public var categoryBits:uint;// = 1 public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 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 { private var m_massData:b2MassData; b2internal var m_aabb:b2AABB; b2internal var m_density:Number; b2internal var m_next:b2Fixture; b2internal var m_body:b2Body; b2internal var m_shape:b2Shape; b2internal var m_friction:Number; b2internal var m_restitution:Number; b2internal var m_proxy; b2internal var m_filter:b2FilterData; b2internal var m_isSensor:Boolean; b2internal var m_userData; 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 GetType():int{ return (m_shape.GetType()); } public function GetShape():b2Shape{ return (m_shape); } 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; }; } public function IsSensor():Boolean{ return (m_isSensor); } 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; }; } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function GetBody():b2Body{ return (m_body); } public function GetNext():b2Fixture{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function TestPoint(_arg1:b2Vec2):Boolean{ return (m_shape.TestPoint(m_body.GetTransform(), _arg1)); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):Boolean{ return (m_shape.RayCast(_arg1, _arg2, m_body.GetTransform())); } public function GetMassData(_arg1:b2MassData=null):b2MassData{ if (_arg1 == null){ _arg1 = new b2MassData(); }; m_shape.ComputeMass(_arg1, m_density); return (_arg1); } public function SetDensity(_arg1:Number):void{ m_density = _arg1; } public function GetDensity():Number{ return (m_density); } public function GetFriction():Number{ return (m_friction); } public function SetFriction(_arg1:Number):void{ m_friction = _arg1; } public function GetRestitution():Number{ return (m_restitution); } public function SetRestitution(_arg1:Number):void{ m_restitution = _arg1; } public function GetAABB():b2AABB{ return (m_aabb); } 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; } b2internal function Destroy():void{ m_shape = null; } b2internal function CreateProxy(_arg1:IBroadPhase, _arg2:b2Transform):void{ m_shape.ComputeAABB(m_aabb, _arg2); m_proxy = _arg1.CreateProxy(m_aabb, this); } b2internal function DestroyProxy(_arg1:IBroadPhase):void{ if (m_proxy == null){ return; }; _arg1.DestroyProxy(m_proxy); m_proxy = null; } 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); } } }//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 userData; public var friction:Number; public var restitution:Number; public var density:Number; public var isSensor:Boolean; public var filter:b2FilterData; 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_allocator; private var m_listener:b2ContactListener; private var m_contactSolver:b2ContactSolver; b2internal var m_bodies:Array; b2internal var m_contacts:Array; b2internal var m_joints:Array; b2internal var m_bodyCount:int; b2internal var m_jointCount:int; b2internal var m_contactCount:int; private var m_bodyCapacity:int; b2internal var m_contactCapacity:int; b2internal var m_jointCapacity:int; 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 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++; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } 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 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 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 AddBody(_arg1:b2Body):void{ _arg1.m_islandIndex = m_bodyCount; var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } } }//package Box2D.Dynamics
Section 92
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var dt:Number; public var inv_dt:Number; public var dtRatio:Number; public var velocityIterations:int; public var positionIterations:int; public var warmStarting:Boolean; 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 s_stack:Array; b2internal var m_flags:int; b2internal var m_contactManager:b2ContactManager; private var m_contactSolver:b2ContactSolver; private var m_island:b2Island; b2internal var m_bodyList:b2Body; private var m_jointList:b2Joint; b2internal var m_contactList:b2Contact; private var m_bodyCount:int; b2internal var m_contactCount:int; private var m_jointCount:int; private var m_controllerList:b2Controller; private var m_controllerCount:int; private var m_gravity:b2Vec2; private var m_allowSleep:Boolean; b2internal var m_groundBody:b2Body; private var m_destructionListener:b2DestructionListener; private var m_debugDraw:b2DebugDraw; private var m_inv_dt0:Number; public static const e_newFixture:int = 1; public static const e_locked:int = 2; private static var s_timestep2:b2TimeStep = new b2TimeStep(); private static var s_xf:b2Transform = new b2Transform(); private static var s_backupA:b2Sweep = new b2Sweep(); private static var s_backupB:b2Sweep = new b2Sweep(); private static var s_timestep:b2TimeStep = new b2TimeStep(); private static var s_queue:Array = new Array(); private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); private static var m_warmStarting:Boolean; private static var m_continuousPhysics:Boolean; 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); } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactManager.m_contactFilter = _arg1; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactManager.m_contactListener = _arg1; } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } 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 Validate():void{ m_contactManager.m_broadPhase.Validate(); } public function GetProxyCount():int{ return (m_contactManager.m_broadPhase.GetProxyCount()); } 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 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--; } 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 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 AddController(_arg1:b2Controller):b2Controller{ _arg1.m_next = m_controllerList; _arg1.m_prev = null; m_controllerList = _arg1; _arg1.m_world = this; m_controllerCount++; return (_arg1); } 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 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 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--; } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } public function GetContactCount():int{ return (m_contactCount); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function GetGravity():b2Vec2{ return (m_gravity); } public function GetGroundBody():b2Body{ return (m_groundBody); } 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 ClearForces():void{ var _local1:b2Body = m_bodyList; while (_local1) { _local1.m_force.SetZero(); _local1.m_torque = 0; _local1 = _local1.m_next; }; } 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 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 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 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 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 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 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 GetBodyList():b2Body{ return (m_bodyList); } public function GetJointList():b2Joint{ return (m_jointList); } public function GetContactList():b2Contact{ return (m_contactList); } public function IsLocked():Boolean{ return (((m_flags & e_locked) > 0)); } 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(); } 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(); }; }; }; } 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); }; }; } 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; }; } } }//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 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); } private function dispatchHandler(_arg1:Event):void{ dispatchEvent(_arg1); } } }//package CPMStar
Section 95
//SimpleStatableObject (Entity.SimpleStatableObject) package Entity { import flash.display.*; public class SimpleStatableObject extends MovieClip { protected var m_stateTime:Number;// = 0 protected var m_state:String;// = null final public function update(_arg1:Number):void{ m_stateTime = (m_stateTime + _arg1); vUpdate(_arg1); } protected function vUpdate(_arg1:Number):void{ } 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{ } } }//package Entity
Section 96
//highscoreloader_63 (gibbets2_level_pack_final_fla.highscoreloader_63) package gibbets2_level_pack_final_fla { import flash.events.*; import flash.media.*; import flash.geom.*; import flash.display.*; import flash.utils.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.external.*; import flash.ui.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class highscoreloader_63 extends MovieClip { public var game:String; public var score:Number; public var view:Number; public var viewURL:String; public var readytoSend:Boolean; public var connected:Boolean; public var connectionID:Number; public var loader; public var AS3_lc:LocalConnection; public function highscoreloader_63(){ addFrameScript(0, frame1, 1, frame2); } public function loadHighscores(_arg1, _arg2, _arg3, _arg4){ game = _arg1; score = _arg2; view = _arg3; viewURL = _arg4; this.visible = true; gotoAndStop(2); resendData(); } 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?")); } public function resendData():void{ if (readytoSend){ as2Ready(); }; } function frame1(){ stop(); this.visible = false; } 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; } } }//package gibbets2_level_pack_final_fla
Section 97
//introFlash_429 (gibbets2_level_pack_final_fla.introFlash_429) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class introFlash_429 extends MovieClip { public function introFlash_429(){ addFrameScript(5, frame6); } function frame6(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 98
//LeftPanel_635 (gibbets2_level_pack_final_fla.LeftPanel_635) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class LeftPanel_635 extends MovieClip { public var m_buttonGibbetsII:SimpleButton; public var m_buttonGibbetsI:SimpleButton; public var m_buttonMoreGames:SimpleButton; public var m_buttonHighScores:SimpleButton; public function LeftPanel_635(){ addFrameScript(38, frame39); } function frame39(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 99
//shirt_39_614 (gibbets2_level_pack_final_fla.shirt_39_614) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class shirt_39_614 extends MovieClip { public function shirt_39_614(){ addFrameScript(88, frame89); } function frame89(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 100
//shirt_41_619 (gibbets2_level_pack_final_fla.shirt_41_619) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class shirt_41_619 extends MovieClip { public function shirt_41_619(){ addFrameScript(51, frame52); } function frame52(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 101
//shirt_42_621 (gibbets2_level_pack_final_fla.shirt_42_621) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class shirt_42_621 extends MovieClip { public function shirt_42_621(){ addFrameScript(51, frame52, 55, frame56, 63, frame64); } function frame52(){ } function frame56(){ } function frame64(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 102
//shirt_44_623 (gibbets2_level_pack_final_fla.shirt_44_623) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class shirt_44_623 extends MovieClip { public var m_buttonPlay:SimpleButton; public var m_buttonOptions:SimpleButton; public var m_buttonCredits:SimpleButton; public function shirt_44_623(){ addFrameScript(30, frame31); } function frame31(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 103
//Symbol3_651 (gibbets2_level_pack_final_fla.Symbol3_651) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class Symbol3_651 extends MovieClip { public function Symbol3_651(){ addFrameScript(80, frame81); } function frame81(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 104
//TVSet_435 (gibbets2_level_pack_final_fla.TVSet_435) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class TVSet_435 extends MovieClip { public function TVSet_435(){ addFrameScript(46, frame47); } function frame47(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 105
//vulture_copy3_401 (gibbets2_level_pack_final_fla.vulture_copy3_401) package gibbets2_level_pack_final_fla { import flash.display.*; public dynamic class vulture_copy3_401 extends MovieClip { public function vulture_copy3_401(){ addFrameScript(21, frame22); } function frame22(){ stop(); } } }//package gibbets2_level_pack_final_fla
Section 106
//FPSCounter (Main.FPSCounter) package Main { import flash.events.*; import flash.utils.*; public class FPSCounter { private var m_fps:int;// = 0 private var m_framesFromLastSecond:int;// = 0 private var m_timer:Timer; public function FPSCounter(){ m_timer = new Timer(1000); super(); m_timer.addEventListener(TimerEvent.TIMER, onTick); m_timer.start(); } public function addFrame():void{ m_framesFromLastSecond++; } public function onTick(_arg1:TimerEvent):void{ m_fps = m_framesFromLastSecond; m_framesFromLastSecond = 0; } public function getFPS():int{ return (m_fps); } } }//package Main
Section 107
//GameState (Main.GameState) package Main { import flash.events.*; import flash.display.*; public class GameState extends MovieClip { private var m_isInitiliazed:Boolean;// = false protected var m_liveTime:Number;// = 0 protected var m_forsedLiveTime:Number;// = 0 protected var m_view:MovieClip; private var m_isMouseDown:Boolean;// = false public function isMouseDown():Boolean{ return (m_isMouseDown); } public function isInitiliazed():Boolean{ return (m_isInitiliazed); } public function handleKeyDown(_arg1:KeyboardEvent):void{ } public function handleKeyUp(_arg1:KeyboardEvent):void{ } public function handleMouseClick(_arg1:MouseEvent):void{ } public function handleMouseDown(_arg1:MouseEvent):void{ m_isMouseDown = true; } public function handleMouseUp(_arg1:MouseEvent):void{ m_isMouseDown = false; } public function handleMouseMove(_arg1:MouseEvent):void{ } public function getViewClip():DisplayObject{ return (null); } public function InternalInit():void{ if (!m_isInitiliazed){ m_isInitiliazed = true; onPreInit(); }; m_liveTime = 0; onInit(); } final public function internalUpdate(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); update(_arg1); } public function update(_arg1:Number):void{ } final public function internalForsedUpdate(_arg1:Number):void{ m_forsedLiveTime = (m_forsedLiveTime + _arg1); forsedUpdate(_arg1); } public function forsedUpdate(_arg1:Number):void{ } public function onResume():void{ } public function onInit():void{ } public function onCleanup():void{ if (m_view){ while (m_view.numChildren != 0) { m_view.removeChildAt(0); }; m_view = null; }; } public function onStop():void{ } public function onPreInit():void{ } } }//package Main
Section 108
//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_debugSprite:Sprite; protected var m_world:b2World; protected var m_physScale:Number;// = 30 protected var m_gravity:b2Vec2; private var m_mouseJoint:b2MouseJoint; protected var m_mouseDragEnabled:Boolean;// = false private var m_accumulateTime:Number;// = 0 public function PhysGameState(){ m_debugSprite = new Sprite(); m_gravity = new b2Vec2(0, 10); super(); } public function getMousePhysPos():b2Vec2{ return (new b2Vec2(((stage.mouseX / m_physScale) / scaleX), ((stage.mouseY / m_physScale) / scaleY))); } 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 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 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 createDynamicBoxFromClip(_arg1:Sprite, _arg2:DisplayObject):b2Body{ var _local3:Number = _arg2.rotation; _arg2.rotation = 0; _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 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); } 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); } override public function handleMouseMove(_arg1:MouseEvent):void{ if (m_mouseDragEnabled){ if (m_mouseJoint){ m_mouseJoint.SetTarget(getMousePhysPos()); }; }; } 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); }; }; }; } 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 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); } } }//package Main
Section 109
//PreloaderState (Main.PreloaderState) package Main { import flash.events.*; import flash.display.*; public class PreloaderState extends GameState { protected var m_loaderInfo:LoaderInfo;// = null private var m_isLoadingFinished:Boolean;// = false private var m_minimalLoadTime:Number;// = 50 protected var m_bytesTotal:Number;// = 100 protected var m_bytesLoaded:Number;// = 100 private var m_percent:Number;// = 0 private var m_isEnded:Boolean;// = false protected var m_scene:MovieClip; public function getPercent():Number{ return (m_percent); } public function setMinimalLoadTime(_arg1:Number):void{ m_minimalLoadTime = _arg1; } 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{ } private function onLoadProgress(_arg1:ProgressEvent):void{ m_bytesTotal = _arg1.bytesTotal; m_bytesLoaded = _arg1.bytesLoaded; } private function onLoadComplete(_arg1:Event):void{ m_loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoadProgress); m_loaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete); m_isLoadingFinished = true; } } }//package Main
Section 110
//StateManager (Main.StateManager) package Main { import flash.events.*; import flash.display.*; import flash.utils.*; import SWFStats.*; import States.*; import flash.ui.*; public class StateManager extends MovieClip { public var hsloader:MovieClip; public var m_preloaderClip:CurrentPreloaderState; private var m_states:Array; private var m_lastState:GameState;// = null private var m_overlay:DisplayObject;// = null private var m_fpsCounter:FPSCounter; private var m_timer:Timer; private var m_seconds:int;// = 0 private var m_currentTime:int; 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(); stage.tabChildren = false; stage.stageFocusRect = false; } 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); var _local5:ContextMenuItem = new ContextMenuItem("Games for your site", true); _local5.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goContentPage); var _local6:ContextMenuItem = new ContextMenuItem("Play Gibbets 1", true); _local6.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goGibbets1); var _local7:ContextMenuItem = new ContextMenuItem("Play original Gibbets 2", false); _local7.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goGibbets2); var _local8:ContextMenuItem = new ContextMenuItem("Video Walkthrough", true); _local8.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goWalkthrough); _local1.customItems = [_local3, _local4, _local6, _local7, _local8, _local5]; contextMenu = _local1; } private function goContentPage(_arg1:ContextMenuEvent):void{ LinksManager.goURL(LinksManager.GAMES_FOR_YOUR_SITE, LinksManager.CONTEXT_MENU_GAMES); } private function goNotdoppler(_arg1:ContextMenuEvent):void{ LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.CONTEXT_MENU_NOTDOPPLER); } private function goGibbets1(_arg1:ContextMenuEvent):void{ LinksManager.goURL(LinksManager.GIBBETS_I_URL, LinksManager.CONTEXT_MENU_GIBBETS_1); } private function goGibbets2(_arg1:ContextMenuEvent):void{ LinksManager.goURL(LinksManager.GIBBETS_II_URL, LinksManager.CONTEXT_MENU_GIBBETS_2); } private function goWalkthrough(_arg1:ContextMenuEvent):void{ LinksManager.goURL(LinksManager.WALKROUTGH_URL, LinksManager.CONTEXT_MENU_WALKTHROUGH); } private function onTimer(_arg1:TimerEvent):void{ m_seconds++; } public function getSeconds():int{ return (m_seconds); } public function getFPS():Number{ return (m_fpsCounter.getFPS()); } private function onKey(_arg1:KeyboardEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleKeyDown(_arg1); }; } private function handleMouseMove(_arg1:MouseEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleMouseMove(_arg1); }; } private function handleKeyUp(_arg1:KeyboardEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleKeyUp(_arg1); }; } private function handleMouseClick(_arg1:MouseEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleMouseClick(_arg1); }; } private function handleMouseUp(_arg1:MouseEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleMouseUp(_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); if (getSeconds() >= (60 * 60)){ GameData.giveAchievement(Achievements.HOUR_PLAYED); }; if (getSeconds() >= ((60 * 60) * 2)){ GameData.giveAchievement(Achievements.TWO_HOURS_PLAYED); }; } private function onStateChanging():void{ if (m_overlay != null){ addChild(m_overlay); }; } public function haveOverlay():Boolean{ return (!((m_overlay == null))); } public function setOverlay(_arg1:DisplayObject):void{ if (_arg1){ m_overlay = _arg1; addChild(m_overlay); } else { trace(new Error().getStackTrace()); }; } public function hitTestOverlays(_arg1:Number, _arg2:Number):Boolean{ return (((m_overlay) && (m_overlay.hitTestPoint(_arg1, _arg2, true)))); } 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(); } public function popState():void{ try { 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(); } catch(e:Error) { trace(e); }; } public function getLastState():GameState{ return (m_lastState); } public function coolChangeState(_arg1:GameState):void{ var _local2:ShadeInState = new ShadeInState(); pushState(_local2); _local2.setNextState(_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); } public function getTopState():GameState{ return (m_states[(m_states.length - 1)]); } function frame1(){ } public static function getInstance():StateManager{ return (m_instance); } } }//package Main
Section 111
//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 { protected var m_nameBodyPath:Dictionary; private var m_isInverted:Boolean;// = false private var m_allPaths:Array; private var m_persID:int;// = -1 private var m_world:b2World; public static const HEAD:String = "HEAD"; public static const TORSO1:String = "TORSO1"; public static const TORSO2:String = "TORSO2"; public static const TORSO3:String = "TORSO3"; public static const LEFT_UPPER_HAND:String = "LEFT_UPPER_HAND"; public static const LEFT_LOWER_HAND:String = "LEFT_LOWER_HAND"; 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 LEFT_LOWER_LEG:String = "LEFT_LOWER_LEG"; public static const RIGHT_UPPER_LEG:String = "RIGHT_UPPER_LEG"; 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 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 getBodyByName(_arg1:String):b2Body{ return (m_nameBodyPath[_arg1]); } public function setVelocity(_arg1:b2Vec2):void{ var _local2:String; for each (_local2 in ALL_PATHS) { getBodyByName(_local2).SetLinearVelocity(_arg1); }; } public function resetVelocity():void{ var _local1:String; for each (_local1 in ALL_PATHS) { getBodyByName(_local1).SetLinearVelocity(new b2Vec2()); getBodyByName(_local1).SetAngularVelocity(0); }; } 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); } 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); } 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 applyImpulse(_arg1:b2Vec2):void{ var _local2:String; for each (_local2 in ALL_PATHS) { getBodyByName(_local2).ApplyImpulse(_arg1, getBodyByName(_local2).GetPosition()); }; } public function getAllPaths():Array{ return (m_allPaths); } } }//package Ragdoll
Section 112
//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_legsFixture:b2Fixture;// = null private var m_torsoFixture:b2Fixture;// = null private var m_headFixture:b2Fixture;// = null private var m_isKilled:Boolean;// = false private var m_anim:MovieClip; private var m_speed:Number; private var m_section:int; private var m_needGoSensor:Boolean;// = false 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; 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 onStop():void{ m_anim.clip.stop(); } override public function onResume():void{ if (m_anim.clip.currentFrame != 1){ m_anim.clip.play(); }; } 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(); 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); SoundManager.play(MathUtils.anyOfString(SoundConst.VULTURE_CRY_1, SoundConst.VULTURE_CRY_2, SoundConst.VULTURE_CRY_3, SoundConst.VULTURE_CRY_4)); m_needGoSensor = true; break; }; addChild(m_anim); m_anim.clip.play(); } override public function onDead(_arg1:b2World):void{ _arg1.DestroyBody(m_body); parent.removeChild(this); } } }//package States.GrifShooting
Section 113
//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 SWFStats.*; import States.*; import flash.system.*; public class GrifShootingState extends PhysGameState { private const STATE_NOT_INITILIAZED:int = -1; private const STATE_NORMAL:int = 0; private const STATE_TAKE_AIM:int = 1; private const STATE_SHOOTING:int = 2; private var m_allStones:Array; private var m_tmpScores:int;// = 0 private var m_mapObjects:Array; private var m_bow:Bow; private var m_guiLayer:Sprite; private var m_spawnVultureTimer:Timer; private var m_layersContainer:Sprite; private var m_backgroundLayer:Sprite; private var m_cloudsLayer:Sprite; private var m_staticLayer:Sprite; private var m_dynamicLayer:Sprite; private var m_frontLayer:Sprite; private var m_arrowsLayer:Sprite; private var m_state:int;// = -1 private var m_arrows:Array; private var m_contactListener:b2ContactListener; private var m_sightClip:MovieClip; private var m_nextState:GrifShootingWinState;// = null private var m_nextStateTimer:Timer; private var m_shootingPower:Number; private var m_arrowsLeft:int; private var m_timeLeft:int; private var m_timer:Timer; private var m_arrowBodyToBodyContacts:Dictionary; private var m_arrowHeadsToBodyContacts:Dictionary; private var m_isInverted:Boolean;// = true private var m_moreGamesPanel:MoreGamesPanel; private var m_lastSection:int;// = -1 private var m_randomCounter:int;// = 0 private var m_totalArrowCount:int; public static var m_currentScores:int = 0; public static var m_wasStar:Boolean = true; public static var m_arrowsUsed:int; public static var m_vulturesKilled:int; public static var m_curLevel:int; private static var m_instance:GrifShootingState = null; public function GrifShootingState(_arg1:int){ m_allStones = new Array(); m_mapObjects = new Array(); m_guiLayer = new Sprite(); m_spawnVultureTimer = new Timer(3000); m_layersContainer = new Sprite(); m_backgroundLayer = new Sprite(); m_cloudsLayer = new Sprite(); m_staticLayer = new Sprite(); m_dynamicLayer = new Sprite(); m_frontLayer = new Sprite(); m_arrowsLayer = new Sprite(); m_arrows = new Array(); m_contactListener = new GrifContactListener(); m_sightClip = new Sight(); m_nextStateTimer = new Timer(3000, 1); m_timer = new Timer(1000); m_arrowBodyToBodyContacts = new Dictionary(); m_arrowHeadsToBodyContacts = new Dictionary(); super(); m_curLevel = _arg1; m_instance = this; m_timeLeft = (90 + ((_arg1 / 6) * 10)); m_totalArrowCount = (15 + ((_arg1 / 6) * 2)); m_arrowsLeft = m_totalArrowCount; if (GameData.haveAchievement(Achievements.ACCURACY_70)){ m_arrowsLeft = (m_arrowsLeft + 10); }; switch (_arg1){ case 5: m_isInverted = false; break; case 17: m_isInverted = true; break; case 29: m_isInverted = false; break; case 41: m_isInverted = true; break; }; } 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; }; } override public function onStop():void{ var _local1:MapObject; for each (_local1 in m_mapObjects) { _local1.onStop(); }; m_spawnVultureTimer.stop(); m_timer.stop(); } override public function onResume():void{ var _local1:MapObject; for each (_local1 in m_mapObjects) { _local1.onResume(); }; m_spawnVultureTimer.start(); m_timer.start(); } 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(); }; }; }; } 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 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 onMenuClick(_arg1:MouseEvent):void{ if (m_nextState == null){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); }; } override public function onInit():void{ Log.LevelCounterMetric("start level", m_curLevel); 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_buttonSkip.addEventListener(MouseEvent.CLICK, onSkipClick); 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_moreGamesPanel = new MoreGamesPanel(true); m_view.addChild(m_moreGamesPanel); GameData.onStartLevel(m_curLevel); } private function onNextStateTimer(_arg1:TimerEvent):void{ StateManager.getInstance().pushState(m_nextState); m_moreGamesPanel.hideWalkthroughSigh(); } 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(); }; }; } private function onSpawnVulture(_arg1:TimerEvent):void{ var _local2:b2Vec2; var _local3:Number; var _local4:int; if (m_curLevel != 53){ while (_local4 == m_lastSection) { _local4 = MathUtils.RandomRangeInt(0, 2); }; m_lastSection = _local4; switch (_local4){ 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; }; if (m_isInverted){ _local2.x = ((Constant.WINDOW_WIDTH / m_physScale) - _local2.x); }; m_spawnVultureTimer.delay = MathUtils.RandomRangeInt(1000, 3000); } else { _local4 = MathUtils.TrueRandomRangeInt(); switch (_local4){ case 0: _local2 = new b2Vec2(((500 / m_physScale) + (MathUtils.RandomRange(-20, 20) / m_physScale)), (580 / m_physScale)); _local3 = MathUtils.RandomRange(-3.2, -2.9); m_isInverted = false; break; case 1: _local2 = new b2Vec2(((590 / m_physScale) + (MathUtils.RandomRange(-20, 20) / m_physScale)), (-100 / m_physScale)); _local3 = MathUtils.RandomRange(2.6, 2.3); m_isInverted = false; break; case 2: _local2 = new b2Vec2(((150 / m_physScale) + (MathUtils.RandomRange(-20, 20) / m_physScale)), (580 / m_physScale)); _local3 = MathUtils.RandomRange(-3.2, -2.9); m_isInverted = true; break; case 3: _local2 = new b2Vec2(((50 / m_physScale) + (MathUtils.RandomRange(-20, 20) / m_physScale)), (-100 / m_physScale)); _local3 = MathUtils.RandomRange(2.6, 2.3); m_isInverted = true; break; }; m_spawnVultureTimer.delay = MathUtils.RandomRangeInt(1000, 2000); }; spawnObjectOnShelf(_local2, _local3, _local4); var _local5:b2Vec2 = new b2Vec2((50 / m_physScale), (8 / m_physScale)); var _local6:VultureShelf = new VultureShelf(_local3, _local5); var _local7:b2BodyDef = new b2BodyDef(); _local7.type = b2Body.b2_dynamicBody; _local7.position = new b2Vec2(_local2.x, (_local2.y + (20 / m_physScale))); var _local8:b2Body = m_world.CreateBody(_local7); var _local9:b2PolygonShape = new b2PolygonShape(); _local9.SetAsBox((_local5.x / 2), (_local5.y / 2)); var _local10:b2FixtureDef = new b2FixtureDef(); _local10.shape = _local9; _local10.density = 1000; _local10.restitution = 0.5; _local10.friction = 0.5; _local8.CreateFixture(_local10); m_staticLayer.addChild(_local6); _local6.connectWithBody(_local8); _local6.x = (_local8.GetPosition().x * m_physScale); _local6.y = (_local8.GetPosition().y * m_physScale); m_mapObjects.push(_local6); } private function spawnTimeGhost(_arg1:b2Vec2, _arg2:Number, _arg3:int):void{ } private function spawnAmmoGhost(_arg1:b2Vec2, _arg2:Number, _arg3:int):void{ var _local4:VultureAmmoGhost; switch (_arg3){ case 0: case 1: case 3: _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); } 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); if (!m_isInverted){ _local20.scaleX = -1; }; 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 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 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 handleKeyDown(_arg1:KeyboardEvent):void{ super.handleKeyDown(_arg1); if (_arg1.keyCode == 80){ StateManager.getInstance().pushState(new GamePausedState()); return; }; } private function onSkipClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); Log.LevelCounterMetric("skip level", m_curLevel); m_nextStateTimer.delay = 700; win(); } 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); } 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; }; } 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 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++; }; } public function onVultureKill(_arg1:b2Vec2, _arg2:int):void{ var _local3 = 100; if (m_curLevel == 53){ switch (_arg2){ case 0: _local3 = 150; break; case 1: _local3 = 250; break; case 2: _local3 = 150; break; case 3: _local3 = 250; break; }; } else { switch (_arg2){ case 0: _local3 = 150; break; case 1: _local3 = 250; break; case 2: _local3 = 350; break; }; }; if (GameData.haveAchievement(Achievements.GRIFS_KILLED)){ _local3 = (_local3 + 50); }; var _local4:AddPointsEffect = new AddPointsEffect(_local3, 1, (_arg1.x * m_physScale), (_arg1.y * m_physScale)); m_frontLayer.addChild(_local4); m_mapObjects.push(_local4); createBlood(_arg1); var _local5:VultureFeathers = new VultureFeathers(); m_arrowsLayer.addChild(_local5); _local5.x = ((_arg1.x * m_physScale) + 13); _local5.y = ((_arg1.y * m_physScale) - 45); if (Math.random() < 0.5){ _local5.scaleX = -1; }; var _local6:Number = MathUtils.RandomRange(0.95, 1.05); _local5.scaleX = (_local5.scaleX * _local6); _local5.scaleY = (_local5.scaleY * _local6); m_mapObjects.push(_local5); addScores(_local3); m_vulturesKilled++; } 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); } 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 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); } override public function update(_arg1:Number):void{ super.update(_arg1); m_bow.update(_arg1); processContacts(); updateArrows(_arg1); updateMapObjects(_arg1); updateScores(); checkOutOfArrows(); recalcGui(); } private function updateScores():void{ if (m_tmpScores < m_currentScores){ m_tmpScores = (m_tmpScores + 21); if (m_tmpScores > m_currentScores){ m_tmpScores = m_currentScores; }; }; } private function addScores(_arg1:int):void{ m_currentScores = (m_currentScores + _arg1); } 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(); }; } 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(); } 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; } 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 createCloud(_arg1:DisplayObject):void{ m_cloudsLayer.addChild(_arg1); m_mapObjects.push((_arg1 as Cloud)); } 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); } override public function onCleanup():void{ m_spawnVultureTimer.removeEventListener(TimerEvent.TIMER, onSpawnVulture); m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_buttonSkip.removeEventListener(MouseEvent.CLICK, onSkipClick); m_nextStateTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, onNextStateTimer); m_timer.removeEventListener(TimerEvent.TIMER, onTimerTick); m_moreGamesPanel = null; super.onCleanup(); } 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 114
//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 onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ onArrowContact(_arg1, _arg2); } 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 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 onDead(_arg1:b2World):void{ _arg1.DestroyBody(m_body); parent.removeChild(this); } } }//package States.GrifShooting
Section 115
//VultureFeathers (States.GrifShooting.VultureFeathers) package States.GrifShooting { import States.PlayState.*; public class VultureFeathers extends AutoreleaseClip { override public function onStop():void{ stop(); } override public function onResume():void{ play(); } } }//package States.GrifShooting
Section 116
//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_movingSpeed:Number;// = 1.66666666666667 private var m_isMovingDown:Boolean;// = true private var m_speed:Number; public function VultureShelf(_arg1:Number, _arg2:b2Vec2){ m_speed = _arg1; } 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; }; } override public function onDead(_arg1:b2World):void{ _arg1.DestroyBody(m_body); parent.removeChild(this); } } }//package States.GrifShooting
Section 117
//VultureShootingRules (States.GrifShooting.VultureShootingRules) package States.GrifShooting { import States.PlayState.*; public class VultureShootingRules extends AutoreleaseClip { override public function onStop():void{ stop(); } override public function onResume():void{ play(); } } }//package States.GrifShooting
Section 118
//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 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 isDead():Boolean{ return ((m_liveTime > 1.7)); } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } } }//package States.PlayState
Section 119
//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; } public function setPower(_arg1:int):void{ m_power = _arg1; } 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); }; }; } 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 isDead():Boolean{ return (m_isDead); } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } } }//package States.PlayState
Section 120
//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_wasBodyContact:Boolean;// = false private var m_bodyFixture:b2Fixture;// = null private var m_arrowHeadFixture:b2Fixture;// = null private var m_body:b2Body;// = null private var m_isStickIn:Boolean;// = false private var m_stickInTime:Number;// = 0 private var m_wasAnyContact:Boolean;// = false private var m_liveTime:Number;// = 0 private var m_lastVelocity:b2Vec2; private var m_ropesKilled:int;// = 0 private var m_isDead:Boolean;// = false private var m_isFreeFly:Boolean;// = false var m_isMassKilled:Boolean;// = false var m_isNextFrame:Boolean;// = false public static const m_halfHeight:Number = 12; public static const m_halfWidth:Number = 1; 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 getRopesKilled():int{ return (m_ropesKilled); } public function kill():void{ m_isDead = true; } public function destroyBody(_arg1:b2World):void{ _arg1.DestroyBody(m_body); m_body = null; } 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 resumeFly():void{ m_body.SetLinearVelocity(m_lastVelocity); } public function stopFly():void{ m_body.SetLinearVelocity(new b2Vec2()); } public function isStickIn():Boolean{ return (m_isStickIn); } public function onAnyContact():void{ m_wasAnyContact = true; } public function setFreeFly():void{ m_isFreeFly = true; } 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()))); } public function isDead():Boolean{ return (m_isDead); } public function stickIn():void{ m_isStickIn = true; m_arrowHeadFixture.SetSensor(true); m_bodyFixture.SetSensor(true); } public function wasAnyContact():Boolean{ return (m_wasAnyContact); } public function getBody():b2Body{ return (m_body); } public function getHeadFixture():b2Fixture{ return (m_arrowHeadFixture); } public function getBodyFixture():b2Fixture{ return (m_bodyFixture); } 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)))){ _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 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 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 canStickIn():Boolean{ return ((m_lastVelocity.LengthSquared() >= (15 * 15))); } public function canInjure():Boolean{ return ((m_lastVelocity.LengthSquared() >= (4 * 4))); } } }//package States.PlayState
Section 121
//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 122
//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 isDead():Boolean{ return ((alpha <= 0)); } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); _arg1.DestroyBody(m_body); } } }//package States.PlayState
Section 123
//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_blackHoleStart:TeleportBack; private var m_blackHoleEnd:TeleportBack; private var m_layer:Sprite; private var m_clip:BowClip; private var m_nextPos:Point; 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 fire():void{ m_clip.gotoAndPlay("fire"); } public function startStretch():void{ m_clip.gotoAndPlay("stretch"); } 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; } 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; }; } } }//package States.PlayState
Section 124
//Camera (States.PlayState.Camera) package States.PlayState { import flash.display.*; public class Camera { protected var m_stateClip:Sprite; protected var m_guiLayer:Sprite; public function setGUILayer(_arg1:Sprite):void{ m_guiLayer = _arg1; } public function setStateClip(_arg1:Sprite):void{ m_stateClip = _arg1; } public function update(_arg1:Number):void{ } public function onShoot(_arg1:Arrow):void{ } public function onKillArrow():void{ } public function onHangerSave():void{ } public function onHangerDead():void{ } public function canShoot():Boolean{ return (true); } public function setGibbet(_arg1:Gibbet):void{ } } }//package States.PlayState
Section 125
//Cloud (States.PlayState.Cloud) package States.PlayState { public class Cloud extends MapObject { private var m_speed:Number; private var m_x:int;// = 0 private var m_iSpeed:Number; 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 126
//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 onStop():void{ if (m_isCry){ m_clip.stop(); }; } override public function onResume():void{ if (m_isCry){ m_clip.play(); }; } 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 127
//Frontground (States.PlayState.Frontground) package States.PlayState { import flash.display.*; public class Frontground extends MovieClip { } }//package States.PlayState
Section 128
//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_health:Number;// = 1 private var m_healthWithoutDamage:Number;// = 1 private var m_dieSpeed:Number;// = 0.03 private var m_comixCloudProb:Number;// = 0 private var m_comixCloud:MovieClip; private var m_comixCloudTime:Number;// = -1 private var m_healthClip:MovieClip; private var m_arrowDamage:Number;// = 0.15 private var m_chain:Array; private var m_destroyBuffer:Array; private var m_isSafed:Boolean;// = false private var m_world:b2World; private var m_faceColor:MovieClip; private var m_ragdoll:HumanRagdoll; private var m_arrowsInBody:int;// = 0 private var m_persID:int; private var m_injureTime:Number;// = -1 private var m_showCloudState:int;// = 0 public function Gibbet(_arg1:b2Vec2, _arg2:String, _arg3:int, _arg4:b2World, _arg5:int, _arg6:Boolean, _arg7:Number){ var _local8:int; var _local16:b2Vec2; var _local20:b2Body; var _local21:b2Body; var _local22:b2Body; var _local23:b2Vec2; m_chain = new Array(); m_destroyBuffer = new Array(); super(); m_world = _arg4; switch (GameData.getDifficulty()){ case GameData.EASY_MODE: m_dieSpeed = MathUtils.RandomRange(0.02, 0.03); break; case GameData.NORMAL_MODE: m_dieSpeed = MathUtils.RandomRange(0.025, 0.035); break; case GameData.HARD_MODE: m_dieSpeed = MathUtils.RandomRange(0.03, 0.037); break; }; if (GameData.haveAchievement(Achievements.LEVEL_24_IN_5_SHOT)){ m_dieSpeed = (m_dieSpeed * 0.9); }; var _local9:b2Vec2 = new b2Vec2((1 / Constant.PHYS_SCALE), (3 / Constant.PHYS_SCALE)); var _local10:b2BodyDef = new b2BodyDef(); _local10.position.x = _arg1.x; _local10.type = b2Body.b2_dynamicBody; var _local11:b2FixtureDef = new b2FixtureDef(); _local11.density = 30; _local11.friction = 0.5; _local11.restitution = 0.1; _local11.isSensor = true; var _local12:b2PolygonShape = new b2PolygonShape(); _local12.SetAsBox(_local9.x, _local9.y); _local11.shape = _local12; _local8 = 0; while (_local8 < _arg3) { _local10.position.y = ((_arg1.y + ((_local9.y * _local8) * 2)) - (1 / Constant.PHYS_SCALE)); _local20 = m_world.CreateBody(_local10); _local20.CreateFixture(_local11); _local20.SetUserData(new Rope()); addChild(_local20.GetUserData()); m_chain.push(_local20); _local8++; }; var _local13:b2RevoluteJointDef = new b2RevoluteJointDef(); _local13.lowerAngle = (-(Math.PI) / 2); _local13.upperAngle = (Math.PI / 2); _local13.enableLimit = true; _local8 = 0; while (_local8 < (m_chain.length - 1)) { _local21 = m_chain[_local8]; _local22 = m_chain[(_local8 + 1)]; _local23 = new b2Vec2(((_local21.GetPosition().x + _local22.GetPosition().x) / 2), ((_local21.GetPosition().y + _local22.GetPosition().y) / 2)); _local13.Initialize(_local21, _local22, _local23); m_world.CreateJoint(_local13); _local8++; }; var _local14:b2RevoluteJointDef = new b2RevoluteJointDef(); _local14.collideConnected = true; _local14.Initialize(m_world.GetGroundBody(), m_chain[0], new b2Vec2(_arg1.x, (_arg1.y - (3 / Constant.PHYS_SCALE)))); m_world.CreateJoint(_local14); var _local15:Boolean; if (_arg2 != HumanRagdoll.HEAD){ m_dieSpeed = (m_dieSpeed / 3); }; switch (_arg2){ case HumanRagdoll.HEAD: _local16 = new b2Vec2(0, 0); _local15 = false; break; case HumanRagdoll.LEFT_LOWER_HAND: _local16 = new b2Vec2((31 / Constant.PHYS_SCALE), (-5 / Constant.PHYS_SCALE)); _local15 = false; break; case HumanRagdoll.RIGHT_LOWER_HAND: _local16 = new b2Vec2((-31 / Constant.PHYS_SCALE), (-5 / Constant.PHYS_SCALE)); _local15 = false; break; case HumanRagdoll.LEFT_LOWER_LEG: _local16 = new b2Vec2((4 / Constant.PHYS_SCALE), (55 / Constant.PHYS_SCALE)); _local15 = true; break; case HumanRagdoll.RIGHT_LOWER_LEG: _local16 = new b2Vec2((-4 / Constant.PHYS_SCALE), (55 / Constant.PHYS_SCALE)); _local15 = true; break; }; var _local17:b2Vec2 = (m_chain[(m_chain.length - 1)] as b2Body).GetPosition().Copy(); if (_arg2 != HumanRagdoll.HEAD){ _arg7 = 0; }; m_ragdoll = new HumanRagdoll(new b2Vec2(((_local17.x + _local16.x) + (_arg7 / Constant.PHYS_SCALE)), (_local17.y + _local16.y)), m_world, _local15, _arg5, _arg6); m_faceColor = (m_ragdoll.getBodyByName(HumanRagdoll.HEAD).GetUserData() as MovieClip); addChild(m_ragdoll); var _local18:b2Body = m_ragdoll.getBodyByName(_arg2); var _local19:b2RevoluteJointDef = new b2RevoluteJointDef(); _local19.Initialize(_local18, m_chain[(m_chain.length - 1)], _local17); m_world.CreateJoint(_local19); m_healthClip = new HealthBar(); addChild(m_healthClip); calcHealthClip(false); calcComixCloudPos(); m_persID = _arg5; switch (GameData.getDifficulty()){ case GameData.EASY_MODE: m_arrowDamage = (m_arrowDamage * 0.7); break; case GameData.NORMAL_MODE: break; case GameData.HARD_MODE: m_arrowDamage = (m_arrowDamage * 2); break; }; if (GameData.haveAchievement(Achievements.LEVEL_44_IN_7_SHOT)){ m_arrowDamage = (m_arrowDamage * 0.8); }; } public function getPersID():int{ return (m_persID); } 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 getRagdoll():HumanRagdoll{ return (m_ragdoll); } override public function isItYourFixture(_arg1:b2Fixture):Boolean{ var _local2:b2Body = _arg1.GetBody(); return (((!((m_chain.indexOf(_local2) == -1))) || (!((m_ragdoll.getAllPaths().indexOf(_local2) == -1))))); } 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); } 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; }; } public function makeLookUgly():void{ m_healthClip.visible = false; m_faceColor.gotoAndStop(4); m_dieSpeed = 0; } public function getHealth():Number{ return (m_health); } public function getHeadPosition():b2Vec2{ return (m_ragdoll.getBodyByName(HumanRagdoll.HEAD).GetPosition().Copy()); } public function haveChainSection(_arg1:b2Body):Boolean{ return (!((m_chain.indexOf(_arg1) == -1))); } 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 isDead():Boolean{ return (false); } public function isKilled():Boolean{ return (m_isDead); } public function setComixCloud(_arg1:MovieClip, _arg2:Number=1):void{ m_comixCloud = _arg1; m_comixCloud.visible = false; m_comixCloudProb = _arg2; } 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 showCloudNow():void{ m_comixCloudTime = Number.MAX_VALUE; m_comixCloud.visible = true; m_showCloudState = 1; } 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); }; } 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")); } } }//package States.PlayState
Section 129
//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"); } public function initRotation():void{ m_rotatedPath.rotation = rotation; rotation = 0; } public function setRotationSpeed(_arg1:Number):void{ m_rotationSpeed = _arg1; } public function setCharge(_arg1:int){ m_charge = _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 onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActive){ m_arrow = _arg1; m_isActive = false; m_needRun = true; SoundManager.play(SoundConst.ARROW_GHOST); }; } override public function isDead():Boolean{ return (m_isDead); } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); _arg1.DestroyBody(m_body); } } }//package States.PlayState
Section 130
//HintText (States.PlayState.HintText) package States.PlayState { import flash.display.*; public class HintText extends MovieClip { } }//package States.PlayState
Section 131
//Levels (States.PlayState.Levels) package States.PlayState { public class Levels { private static const LEVEL_0:XML = <Level easy="20" normal="10" hard="2"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object x="0" y="0" rotation="0" clip_name="TryToAimHint"/> <Object type="points_ghost" power="500" x="131" y="302" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="530" y="397" rotation="-70.00090026855469" clip_name="BowPoint"/> <Object type="cloud" x="586" y="21" rotation="0" clip_name="Cloud8"/> <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 scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="544" y="427" rotation="0" clip_name="herb"/> <Object type="gibbet_obliquely" inverted="false" x="110" y="349" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="92" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="145" y="339" rotation="0" clip_name="HangerPoint" cloud_name="PhraseCloud0" cloud_prob="1"/> <Object type="static_box" is_stone="false" x="125" y="334" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="138" y="328" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="91" y="333" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" type="background" x="287" y="293" rotation="0" clip_name="tree_6"/> <Object scaleX="1" scaleY="1" width="44.95" height="42.55" type="frontground" x="160" y="404" rotation="0" clip_name="flower_3"/> <Object x="0" y="0" rotation="0" clip_name="ToPullBowHint"/> <Object x="0" y="0" rotation="0" clip_name="YouWillGetAStar"/> <Object x="-68" y="-25" rotation="0" clip_name="ThisIsBonusHint"/> <Object type="highlight" size="150" x="145" y="355" rotation="0" clip_name="YouWillGetAStar"/> <Object type="highlight" size="150" x="131" y="302" rotation="0" clip_name="ThisIsBonusHint"/> <Object type="highlight" size="150" x="145" y="355" rotation="0" clip_name="TryToAimHint"/> <Object type="highlight" size="150" x="529" y="396" rotation="0" clip_name="ToPullBowHint"/> </Level> ; private static const LEVEL_1:XML = <Level easy="15" normal="9" hard="4"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="points_ghost" power="300" x="596" y="142" rotation="0" clip_name="PointsGhost300"/> <Object type="gibbet_obliquely" inverted="true" x="524" y="266" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object scaleX="1" scaleY="1" type="background" x="-2" y="329" rotation="0" clip_name="Back1"/> <Object type="gibbet_obliquely" inverted="false" x="226" y="266" rotation="0" clip_name="GibbetObliquely"/> <Object scaleX="1" scaleY="1" type="background" x="312" y="256" rotation="0" clip_name="tree_8"/> <Object type="gibbet_ground" x="254" y="397" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="207" y="300" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="244" y="249" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="254" y="254" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="247" y="243" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="207" y="248" rotation="0" clip_name="Screw"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="53" y="322" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="gibbet_ground" x="495" y="397" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="543" y="301" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="508" y="250" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="496" y="255" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="489" y="244" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="543" y="249" rotation="0" clip_name="Screw"/> <Object type="sun" x="556" y="86" 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 type="static_box" is_stone="true" x="150" y="326" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="150" y="360" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="150" y="394" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="150" y="428" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="150" y="190" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="150" y="224" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="150" y="258" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="150" y="292" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="601" y="326" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="601" y="360" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="601" y="394" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="601" y="426" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="601" y="190" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="601" y="224" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="601" y="258" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="601" y="292" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="567" y="190" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="464" y="190" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="498" y="190" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="532" y="190" rotation="0" clip_name="Stone3"/> <Object type="teleport_ghost" x="374" y="219" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="150" y="156" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="287" y="156" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="184" y="156" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="218" y="156" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="252" y="156" rotation="0" clip_name="Stone3"/> </Level> ; private static const LEVEL_2:XML = <Level easy="15" normal="9" hard="5"> <Object scaleX="1" scaleY="1" type="background" x="-3" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-6" y="357" rotation="0" clip_name="Back2"/> <Object type="shooting_point" x="51" y="211" rotation="75.00189208984375" clip_name="BowPoint"/> <Object type="ground" x="315" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="103" y="338" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="false" x="67" y="349" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="49" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="84" y="332" rotation="0" clip_name="GibbetStick"/> <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" width="6.3" height="6.3" type="frontground" x="49" y="332" rotation="0" clip_name="Screw"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="539" y="338" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="true" x="570" y="350" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="589" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="553" y="332" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="531" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="588" y="332" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="112" y="427" rotation="0" clip_name="herb"/> <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="static_box" is_stone="true" x="115" y="244" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="81" y="263" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="47" y="263" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="13" y="263" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="251" y="226" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="217" y="226" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="183" y="226" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="149" y="226" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="381" y="226" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="517" y="240" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="483" y="226" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="449" y="226" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="415" y="226" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="619" y="256" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="585" y="256" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="551" y="256" rotation="0" clip_name="Stone3"/> <Object type="dynamic_box" x="251" y="282" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="251" y="307" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="251" y="332" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="251" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="251" y="383" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="251" y="408" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="251" y="433" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="251" y="256" rotation="0" clip_name="Box"/> <Object type="tnt_barrel" x="317" y="423" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="dynamic_box" x="381" y="282" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="381" y="307" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="381" y="332" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="381" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="381" y="383" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="381" y="408" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="381" y="433" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="381" y="256" rotation="0" clip_name="Box"/> <Object type="teleport_ghost" x="317" y="296" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="261" y="192" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="368" y="192" rotation="0" clip_name="Stone1"/> <Object scaleX="1" scaleY="1" width="38.7" height="43.05" type="frontground" x="466" y="400" rotation="0" clip_name="flower_2"/> <Object type="vulture" inverted="true" x="376" y="156" rotation="0" clip_name="InvertedVultureHere"/> <Object type="points_ghost" power="300" x="587" y="213" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="300" x="445" y="184" rotation="0" clip_name="PointsGhost300"/> </Level> ; private static const LEVEL_3:XML = <Level easy="10" normal="5" hard="3"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet_obliquely" inverted="true" x="499" y="150" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object scaleX="1.0068817138671875" scaleY="1" type="background" x="-4" y="331" rotation="0" clip_name="Back1"/> <Object type="shooting_point" x="326" y="413" rotation="-79.99894714355469" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="408" y="138" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="464" y="138" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="517" y="183" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="483" y="132" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="429" y="132" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="60" y="262" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="94" y="262" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="128" y="262" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="162" y="262" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="230" y="262" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="264" y="262" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="60" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="263" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="60" y="328" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="60" y="361" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="231" y="395" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="60" y="394" rotation="0" clip_name="Stone2"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="true" x="60" y="427" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="231" y="429" rotation="0" clip_name="Stone2"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="400" y="127" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="456" y="127" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="517" y="132" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="470" y="427" rotation="0" clip_name="herb"/> <Object type="gibbet_obliquely" inverted="false" x="143" y="152" rotation="0" clip_name="GibbetObliquely"/> <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="420" y="90" rotation="0" clip_name="Cloud9"/> <Object type="hedhehog_ghost" speed="20" charge="4" x="326" y="141" rotation="0" clip_name="ArrowGhost4"/> <Object type="static_box" is_stone="true" x="376" y="262" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="410" y="262" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="444" y="262" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="511" y="262" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="545" y="262" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="579" y="262" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="376" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="579" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="579" y="328" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="408" y="394" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="579" y="362" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="579" y="394" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="408" y="428" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="579" y="428" rotation="0" clip_name="Stone2"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="172" y="139" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="228" y="139" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="120" y="184" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="156" y="133" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="219" y="133" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="164" y="128" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="220" y="128" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="120" y="133" rotation="0" clip_name="Screw"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="153" y="337" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="false" x="120" y="350" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="101" y="382" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="137" y="331" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="145" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="101" y="331" rotation="0" clip_name="Screw"/> <Object type="gibbet_obliquely" inverted="true" x="519" y="350" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="484" y="338" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="537" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="503" y="332" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="476" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="537" y="332" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="196" y="262" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="478" y="262" rotation="0" clip_name="Stone2"/> <Object scaleX="1" scaleY="1" width="28.45" height="36.5" type="frontground" x="156" y="397" rotation="0" clip_name="flower_4"/> </Level> ; private static const LEVEL_4:XML = <Level easy="12" normal="7" hard="2"> <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 type="static_box" is_stone="false" x="438" y="276" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="204" y="276" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="466" y="427" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="465" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="466" y="358" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="465" y="323" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="466" y="289" rotation="0" clip_name="Stone0"/> <Object type="shooting_point" x="34" y="356" rotation="45" clip_name="BowPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="280" y="282" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="178" 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="178" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="178" y="358" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="178" y="289" rotation="0" clip_name="Stone0"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="322" y="158" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="292" y="276" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="355" y="281" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="377" y="276" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="306" y="425" 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 scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="347" y="270" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="273" y="270" rotation="0" clip_name="RopeRings"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="412" y="190" rotation="-68.69349670410156" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="false" x="322" y="153" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="351" y="138" rotation="44.99955749511719" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="465" y="251" rotation="44.99955749511719" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="179" y="251" rotation="-44.99955749511719" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="236" y="195" rotation="-44.99955749511719" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="292" y="138" rotation="-44.99955749511719" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="322" y="111" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="315" y="147" rotation="0" clip_name="RopeRings"/> <Object type="vulture" inverted="true" x="317" y="86" rotation="0" clip_name="InvertedVultureHere"/> <Object scaleX="1" scaleY="1" type="background" x="478" y="228" rotation="0" clip_name="tree_4"/> <Object scaleX="1" scaleY="1" type="background" x="6" y="347" rotation="0" clip_name="tree_1"/> <Object type="points_ghost" power="500" x="411" y="416" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="548" y="418" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_5:XML = null; private static const LEVEL_6:XML = <Level easy="15" normal="8" hard="2"> <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="358" y="230" rotation="0" clip_name="tree_4"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="539" y="401" rotation="-63.22898864746094" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="true" x="557" y="184" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="576" y="218" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="521" y="173" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="536" y="312" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="542" y="167" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="103" y="114" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="85" y="149" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="138" y="103" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="121" y="242" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="118" y="97" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="513" y="162" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="131" y="92" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="575" y="167" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="84" y="97" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="568" y="426" rotation="0" clip_name="herb"/> <Object type="sun" x="371" y="78" rotation="0" clip_name="States.PlayState::Sun"/> <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 type="hedhehog_ghost" speed="0" charge="1" x="111" y="368" rotation="34.99952697753906" clip_name="ArrowGhost1"/> <Object type="cow" inverted="false" x="251" y="320" rotation="0" clip_name="CowHere"/> <Object scaleX="1" scaleY="1" type="background" x="47" y="352" rotation="0" clip_name="tree_1"/> <Object type="points_ghost" power="500" x="120" y="65" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_7:XML = <Level easy="13" normal="8" hard="4"> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <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="358" rotation="0" clip_name="Back2"/> <Object type="shooting_point" x="319" y="398" rotation="50.00074768066406" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="460" y="161" rotation="0" clip_name="tree_7"/> <Object scaleX="1" scaleY="1" type="background" x="-126" y="148" rotation="0" clip_name="tree_5"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="sun" x="329" y="67" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="44.95" height="42.55" type="frontground" x="170" 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"/> <Object type="gibbet_obliquely" inverted="true" x="526" y="63" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="545" y="97" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="490" y="51" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="525" y="191" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="511" y="46" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="115" y="64" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="97" y="98" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="150" y="52" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="113" y="191" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="130" y="46" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="482" y="40" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="143" y="41" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="546" y="45" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="96" y="46" rotation="0" clip_name="Screw"/> <Object type="gibbet_obliquely" inverted="false" x="115" y="349" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="97" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="150" y="337" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="130" y="331" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="143" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="96" y="331" rotation="0" clip_name="Screw"/> <Object type="gibbet_obliquely" inverted="true" x="526" y="351" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="545" y="385" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="490" y="339" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="511" y="334" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="482" y="328" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="546" y="333" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="416" y="405" rotation="0" clip_name="flower_0"/> <Object type="points_ghost" power="1000" x="32" y="414" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="610" y="418" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_8:XML = <Level easy="6" normal="5" hard="3"> <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="574" y="366" rotation="-79.99894714355469" clip_name="BowPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="145" y="345" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="false" x="120" y="355" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="101" y="390" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="137" y="339" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" type="background" x="215" y="233" 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="137" y="334" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="101" 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="346" y="161" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="346" y="136" rotation="0" clip_name="Box"/> <Object type="tnt_barrel" x="345" y="101" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="gibbet_obliquely" inverted="true" x="424" y="77" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_ground" x="399" y="207" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="442" y="112" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="407" y="61" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="395" y="66" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="387" y="55" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="442" y="61" rotation="0" clip_name="Screw"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="111" y="218" rotation="44.99955749511719" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="111" y="259" rotation="44.99955749511719" clip_name="ArrowGhost1"/> <Object type="dynamic_box" x="345" y="68" rotation="0" clip_name="Box"/> <Object type="vulture" inverted="false" x="107" y="311" rotation="0" clip_name="VultureHere"/> <Object scaleX="1" scaleY="1" type="background" x="462" y="384" rotation="0" clip_name="BgStones"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="376" y="402" rotation="0" clip_name="flower_6"/> </Level> ; private static const LEVEL_9:XML = <Level easy="5" normal="3" hard="2"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="356" y="121" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="272" y="121" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="309" y="311" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="322" y="152" rotation="0" clip_name="tree_5"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="389" y="312" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="229" y="311" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="shooting_point" x="138" y="360" rotation="20.000656127929688" clip_name="BowPoint"/> <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 scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="232" y="425" 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"/> <Object type="hedhehog_ghost" speed="45" charge="3" x="143" y="193" rotation="54.724517822265625" clip_name="ArrowGhost3"/> <Object scaleX="1" scaleY="1" type="background" x="17" y="367" rotation="0" clip_name="tree_2"/> <Object type="points_ghost" power="300" x="596" y="417" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="1000" x="393" y="55" rotation="0" clip_name="PointsGhost1000"/> <Object type="static_box" is_stone="true" x="322" y="293" rotation="0" clip_name="ComposedStone23"/> <Object type="static_box" is_stone="true" x="321" y="102" rotation="0" clip_name="ComposedStone24"/> </Level> ; private static const LEVEL_10:XML = <Level easy="10" normal="6" hard="4"> <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="9" y="291" rotation="0" clip_name="tree_6"/> <Object type="gibbet_obliquely" inverted="true" x="294" y="246" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="shooting_point" x="336" y="71" rotation="0.0008697509765625" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="false" x="378" y="245" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="359" y="280" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="396" y="228" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="408" y="233" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="401" y="223" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="359" y="228" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" type="background" x="492" 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="471" y="358" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="201" y="358" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="false" x="311" y="279" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="276" y="228" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="264" y="233" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="256" y="222" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="311" y="228" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="200" y="324" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="200" y="290" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="471" y="325" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="471" y="291" rotation="0" clip_name="Stone3"/> <Object type="teleport_ghost" x="560" y="245" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="99" y="244" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="213" y="424" rotation="0" clip_name="herb"/> <Object type="sun" x="66" y="67" 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="static_box" is_stone="true" x="200" y="189" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="200" y="155" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="200" y="121" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="471" y="188" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="471" y="155" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="471" y="121" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="335" y="121" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="301" y="121" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="267" y="121" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="234" y="121" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="437" y="121" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="403" y="121" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="370" y="121" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="335" y="358" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="301" y="358" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="267" y="358" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="234" y="358" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="437" y="358" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="403" y="358" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="370" y="358" rotation="0" clip_name="Stone2"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="99" y="411" rotation="78.80123901367188" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="562" y="411" rotation="0" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="335" y="411" rotation="78.80123901367188" clip_name="ArrowGhost1"/> <Object scaleX="1" scaleY="1" width="38.7" height="43.05" type="frontground" x="402" y="399" rotation="0" clip_name="flower_2"/> <Object type="points_ghost" power="300" x="201" y="414" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="300" x="473" y="415" rotation="0" clip_name="PointsGhost300"/> </Level> ; private static const LEVEL_11:XML = null; private static const LEVEL_12:XML = <Level easy="15" normal="10" hard="3"> <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="17" y="150" rotation="0" clip_name="tree_5"/> <Object type="gibbet_ground" x="452" y="329" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet_ground" x="80" y="329" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet_ground" x="266" y="329" rotation="0" clip_name="GibbetGround"/> <Object type="shooting_point" x="603" y="199" rotation="-49.999725341796875" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet_obliquely" inverted="false" x="51" y="199" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="32" y="233" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="66" y="182" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="86" y="187" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="cloud" x="542" y="26" rotation="0" clip_name="Cloud4"/> <Object type="sun" x="68" y="68" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="31" y="182" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="314" y="424" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="33.6" height="37.6" type="frontground" x="33" y="408" rotation="0" clip_name="flower_1"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="78" y="177" 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="gibbet_obliquely" inverted="false" x="238" y="199" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="219" y="233" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="253" y="182" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="273" y="187" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="218" y="182" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="265" y="177" rotation="0" clip_name="RopeRings"/> <Object type="gibbet_obliquely" inverted="false" x="426" y="199" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="407" y="233" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="441" y="182" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="461" y="187" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="406" y="182" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="453" y="177" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" type="background" x="525" y="369" rotation="0" clip_name="tree_2"/> <Object type="points_ghost" power="1000" x="359" y="418" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_13:XML = <Level easy="12" normal="7" hard="3"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <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="4" y="161" rotation="0" clip_name="tree_7"/> <Object type="shooting_point" x="580" y="382" rotation="-45" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="true" x="362" y="354" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="382" y="389" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="347" y="337" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="330" y="342" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="322" y="331" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="382" y="336" rotation="0" clip_name="Screw"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="79" y="381" rotation="69.99934387207031" clip_name="ArrowGhost1"/> <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="tnt_barrel" x="330" y="311" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="dynamic_box" x="279" y="432" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="279" y="407" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="279" y="382" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="279" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="279" y="331" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="279" y="306" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="279" y="281" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="279" y="255" rotation="0" clip_name="Box"/> <Object type="gibbet_obliquely" inverted="true" x="413" y="77" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="434" y="112" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="399" y="61" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="382" y="66" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="374" y="55" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="434" y="61" rotation="0" clip_name="Screw"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="126" y="421" rotation="14.0008544921875" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="282" y="145" rotation="40.00129699707031" clip_name="ArrowGhost1"/> <Object type="gibbet_ground" x="385" y="208" rotation="0" clip_name="GibbetGround"/> <Object scaleX="1" scaleY="1" width="38.7" height="43.05" type="frontground" x="470" y="399" rotation="0" clip_name="flower_2"/> </Level> ; private static const LEVEL_14:XML = <Level easy="15" normal="10" hard="6"> <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="89" y="150" rotation="0" clip_name="tree_5"/> <Object type="gibbet_obliquely" inverted="true" x="585" y="352" rotation="0" clip_name="InvertedGibbetObliquely"/> <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="537" y="339" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="604" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="569" y="334" 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="shooting_point" x="60" y="95" rotation="90" clip_name="BowPoint"/> <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 scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="530" y="329" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="604" y="334" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="78" y="425" rotation="0" clip_name="herb"/> <Object type="tnt_barrel" x="383" y="96" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="dynamic_box" x="347" y="104" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="484" y="432" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="484" y="407" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="484" y="382" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="484" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="484" y="332" rotation="0" clip_name="Box"/> <Object type="static_box" is_stone="true" x="382" y="426" rotation="0" clip_name="Stone2"/> <Object type="teleport_ghost" x="63" y="375" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="vulture" inverted="true" x="599" y="306" rotation="0" clip_name="InvertedVultureHere"/> <Object type="static_box" is_stone="true" x="247" y="134" rotation="0" clip_name="ComposedStone25"/> </Level> ; private static const LEVEL_15:XML = <Level easy="10" normal="10" hard="4"> <Object type="cloud" x="438" y="115" rotation="0" clip_name="Cloud9"/> <Object scaleX="1" scaleY="1" type="background" x="8" y="1" 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="489" y="355" rotation="-110" clip_name="BowPoint"/> <Object type="cloud" x="118" y="82" rotation="0" clip_name="Cloud4"/> <Object type="tnt_barrel" x="483" y="157" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="static_box" is_stone="true" x="501" y="196" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="229" y="253" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="263" y="253" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="297" y="253" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="331" y="253" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="365" y="253" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="399" y="263" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="467" y="195" rotation="0" clip_name="Stone0"/> <Object type="sun" x="582" y="64" rotation="0" clip_name="States.PlayState::Sun"/> <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="gibbet_ground" x="117" y="177" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet_obliquely" inverted="false" x="88" y="47" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="69" y="81" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="103" y="30" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="123" y="35" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="69" y="30" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="116" y="25" rotation="0" clip_name="RopeRings"/> <Object type="gibbet_ground" x="117" y="436" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet_obliquely" inverted="false" x="88" y="306" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="69" y="340" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="103" y="289" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="123" y="294" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="69" y="289" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="116" y="284" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="true" x="399" y="229" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="399" y="196" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="399" y="86" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="93" y="253" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="127" y="253" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="161" y="253" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="195" y="253" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="24" y="253" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="58" y="253" rotation="0" clip_name="Stone0"/> <Object type="hedhehog_ghost" speed="-70" charge="3" x="303" y="127" rotation="-56.74586486816406" clip_name="ArrowGhost3"/> <Object type="static_box" is_stone="true" x="399" y="52" rotation="0" clip_name="Stone2"/> <Object type="dynamic_box" x="398" y="165" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="398" y="140" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="398" y="115" rotation="0" clip_name="Box"/> <Object type="static_box" is_stone="true" x="399" y="18" rotation="0" clip_name="Stone3"/> <Object type="teleport_ghost" x="584" y="147" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="399" y="365" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="399" y="331" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="399" y="297" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="399" y="399" rotation="0" clip_name="Stone0"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="398" y="437" rotation="-46.95375061035156" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="433" y="195" rotation="0" clip_name="Stone2"/> </Level> ; private static const LEVEL_16:XML = <Level easy="18" normal="12" hard="6"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-6" y="279" rotation="0" clip_name="BonusGameBack"/> <Object type="sun" x="77" y="74" rotation="0" clip_name="States.PlayState::Sun"/> <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="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="446" y="83" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="191" y="83" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="192" y="65" rotation="0" clip_name="Stone0"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="275" y="83" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="277" y="65" rotation="0" clip_name="Stone1"/> <Object type="shooting_point" x="321" y="237" rotation="-0.0008697509765625" clip_name="BowPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="360" y="83" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="362" y="65" rotation="0" clip_name="Stone2"/> <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="static_box" is_stone="true" x="447" y="65" rotation="0" clip_name="Stone3"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="190" y="323" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="191" y="305" rotation="0" clip_name="Stone0"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="448" y="323" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="449" y="305" rotation="0" clip_name="Stone3"/> <Object type="vulture" inverted="true" x="455" y="269" rotation="0" clip_name="InvertedVultureHere"/> </Level> ; private static const LEVEL_17:XML = null; private static const LEVEL_18:XML = <Level easy="10" normal="5" hard="1"> <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="static_box" is_stone="false" x="95" y="452" rotation="0" clip_name="GibbetColumn"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" type="background" x="167" y="254" rotation="0" clip_name="tree_8"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="156" y="295" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="false" x="112" y="308" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="95" y="341" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="129" y="291" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" type="background" x="277" y="295" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="-70" scaleX="1.0000000041909516" scaleY="1.0000000041909516" x="334" y="338" rotation="179.9947509765625" clip_name="MillFan"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="94" y="291" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="148" y="285" 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="21" y="424" 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="shooting_point" x="546" y="355" rotation="-88.76223754882813" clip_name="BowPoint"/> <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"/> <Object scaleX="1" scaleY="1" type="background" x="428" y="352" rotation="0" clip_name="tree_1"/> <Object type="points_ghost" power="1000" x="42" y="417" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="500" x="136" y="259" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_19:XML = <Level easy="9" normal="6" hard="3"> <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="shooting_point" x="325" y="418" rotation="-45" clip_name="BowPoint"/> <Object type="ground" x="321" y="461" rotation="0" clip_name="Ground"/> <Object type="sun" x="77" y="92" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="122" y="427" 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="static_box" is_stone="true" x="289" y="356" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="154" y="356" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="323" y="356" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="487" y="356" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="522" y="356" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="590" y="356" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="556" y="356" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="623" y="356" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="52" y="356" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="18" y="356" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="120" y="356" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="86" y="356" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="324" y="322" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="324" y="221" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="324" y="254" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="324" y="288" rotation="0" clip_name="Stone3"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="142" y="298" rotation="47.00096130371094" clip_name="ArrowGhost1"/> <Object type="teleport_ghost" x="526" y="277" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="290" y="187" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="256" y="187" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="358" y="187" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="324" y="187" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="154" y="187" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="120" y="187" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="222" y="187" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="188" y="187" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="18" y="187" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="86" y="187" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="52" y="187" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="426" y="187" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="392" y="187" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="572" y="187" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="640" y="187" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="606" y="187" rotation="0" clip_name="Stone3"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="389" y="124" rotation="-66.04782104492188" clip_name="ArrowGhost1"/> <Object type="gibbet_obliquely" inverted="false" x="171" y="75" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="153" y="109" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="187" y="58" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="206" y="63" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="152" y="58" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="199" y="53" rotation="0" clip_name="RopeRings"/> <Object type="gibbet_obliquely" inverted="true" x="259" y="246" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="212" y="233" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="279" y="278" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="243" y="228" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="205" y="223" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="278" y="228" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="538" y="187" rotation="0" clip_name="Stone2"/> <Object type="highlight" size="150" x="525" y="277" rotation="0" clip_name="TeleportHint"/> </Level> ; private static const LEVEL_20:XML = <Level easy="10" normal="10" hard="5"> <Object scaleX="1" scaleY="1" type="background" x="-2" y="1" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-12" y="280" rotation="0" clip_name="BonusGameBack"/> <Object type="shooting_point" x="94" y="346" rotation="45" clip_name="BowPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="215" y="309" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="sun" x="80" y="71" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="86" y="92" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="360" y="32" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-52" y="206" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="537" y="206" rotation="0" clip_name="Cloud6"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="443" y="309" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" type="background" x="272" y="254" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="-60" scaleX="1" scaleY="1" x="330" y="297" rotation="0" clip_name="MillFan"/> <Object type="static_box" is_stone="true" x="216" y="292" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="443" y="292" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="215" y="139" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="443" y="139" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" type="background" x="272" y="84" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="40" scaleX="1" scaleY="1" x="330" y="127" rotation="180" clip_name="MillFan"/> <Object type="static_box" is_stone="true" x="216" y="122" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="443" y="122" rotation="0" clip_name="Stone1"/> <Object type="vulture" inverted="false" x="211" y="256" rotation="0" clip_name="VultureHere"/> <Object type="vulture" inverted="true" x="451" y="87" rotation="0" clip_name="InvertedVultureHere"/> </Level> ; private static const LEVEL_21:XML = <Level easy="12" normal="8" hard="5"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-6" y="282" rotation="0" clip_name="BonusGameBack"/> <Object type="shooting_point" x="67" y="227" rotation="90" clip_name="BowPoint"/> <Object type="sun" x="64" y="66" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="183" y="69" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="432" y="13" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="630" y="169" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="63" y="215" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="-120" y="37" rotation="0" clip_name="Cloud5"/> <Object type="gibbet_obliquely" inverted="true" x="278" y="107" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_obliquely" inverted="false" x="377" y="109" rotation="0" clip_name="GibbetObliquely"/> <Object type="gibbet_ground" x="406" y="240" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="359" y="143" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="396" y="92" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="418" y="97" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="410" y="86" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="358" y="92" rotation="0" clip_name="Screw"/> <Object type="gibbet_ground" x="249" y="238" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="297" y="142" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="262" y="91" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="239" y="96" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="231" y="85" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="297" y="91" rotation="0" clip_name="Screw"/> <Object type="teleport_ghost" x="589" y="232" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="gibbet_obliquely" inverted="true" x="278" y="302" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_obliquely" inverted="false" x="377" y="304" rotation="0" clip_name="GibbetObliquely"/> <Object type="gibbet_ground" x="406" y="435" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="359" y="338" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="396" y="287" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="418" y="292" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="410" y="281" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="358" y="287" rotation="0" clip_name="Screw"/> <Object type="gibbet_ground" x="249" y="433" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="297" y="337" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="262" y="286" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="239" y="291" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="231" y="280" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="297" y="286" rotation="0" clip_name="Screw"/> <Object type="vulture" inverted="true" x="293" y="64" rotation="0" clip_name="InvertedVultureHere"/> </Level> ; private static const LEVEL_22:XML = <Level easy="6" normal="4" hard="3"> <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="481" y="293" rotation="0" clip_name="tree_6"/> <Object type="shooting_point" x="86" y="369" rotation="90" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="hedhehog_ghost" speed="50" charge="3" x="562" y="308" rotation="-39.21464538574219" clip_name="ArrowGhost3"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="66" y="425" 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"/> <Object type="gibbet_obliquely" inverted="false" x="347" y="121" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="329" y="155" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="363" y="105" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="LEFT_LOWER_LEG" connect_legs="true" chains_count="11" x="383" y="110" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="328" y="105" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="375" y="99" rotation="0" clip_name="RopeRings"/> <Object type="dynamic_box" x="248" y="432" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="248" y="407" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="248" y="382" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="248" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="248" y="332" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="248" y="307" rotation="0" clip_name="Box"/> <Object type="tnt_barrel" x="196" y="424" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="dynamic_box" x="458" y="432" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="458" y="407" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="458" y="382" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="458" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="458" y="332" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="458" y="307" rotation="0" clip_name="Box"/> <Object type="tnt_barrel" x="405" y="424" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="static_box" is_stone="false" x="329" y="228" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="330" y="296" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="119" y="245" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="221" y="245" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="187" y="245" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="153" y="245" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="221" y="279" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="323" y="279" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="289" y="279" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="255" y="279" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="357" y="279" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="459" y="279" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="425" y="279" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="391" y="279" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="-17" y="245" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="85" y="245" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="51" y="245" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="17" y="245" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="-51" y="245" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="-85" y="245" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="-119" y="245" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" width="28.45" height="36.5" type="frontground" x="287" y="397" rotation="0" clip_name="flower_4"/> <Object type="vulture" inverted="false" x="335" y="76" rotation="0" clip_name="VultureHere"/> <Object type="points_ghost" power="300" x="601" y="418" rotation="0" clip_name="PointsGhost300"/> </Level> ; private static const LEVEL_23:XML = null; private static const LEVEL_24:XML = <Level easy="11" normal="9" hard="5"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="57" y="190" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="57" y="169" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="9" x="221" y="369" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" type="background" x="-6" y="280" rotation="0" clip_name="BonusGameBack"/> <Object type="static_box" is_stone="true" x="222" y="349" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="119" y="258" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="120" y="237" rotation="0" clip_name="Stone1"/> <Object type="sun" x="568" y="85" rotation="0" clip_name="States.PlayState::Sun"/> <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="shooting_point" x="322" y="99" rotation="-179.99563598632813" clip_name="BowPoint"/> <Object type="cloud" x="-46" y="15" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-157" y="65" rotation="0" clip_name="Cloud9"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="584" y="191" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="584" y="170" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="9" x="421" y="369" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="422" y="349" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="521" y="258" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="522" y="237" rotation="0" clip_name="Stone1"/> <Object type="hedhehog_ghost" speed="50" charge="3" x="320" y="319" rotation="0" clip_name="ArrowGhost3"/> <Object type="static_box" is_stone="true" x="160" y="185" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="484" y="185" rotation="0" clip_name="Stone3"/> <Object type="vulture" inverted="false" x="50" y="133" rotation="0" clip_name="VultureHere"/> <Object type="vulture" inverted="true" x="432" y="314" rotation="0" clip_name="InvertedVultureHere"/> </Level> ; private static const LEVEL_25:XML = <Level easy="3" normal="2" hard="1"> <Object scaleX="1" scaleY="1" type="background" x="3" 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="326" y="129" rotation="179.99913024902344" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="hedhehog_ghost" speed="17" charge="4" x="325" y="269" rotation="134.9982452392578" clip_name="ArrowGhost4"/> <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="67" y="419" rotation="0" clip_name="flower_5"/> <Object type="static_box" is_stone="true" x="274" y="118" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="376" y="118" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="274" y="152" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="274" y="84" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="376" y="152" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="376" y="84" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="308" y="84" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="342" y="84" rotation="0" clip_name="Stone1"/> <Object type="gibbet_obliquely" inverted="true" x="510" y="157" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="529" y="191" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="474" y="146" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="489" y="285" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="495" y="140" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="139" y="158" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="121" y="192" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="174" y="148" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="157" y="285" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="154" y="140" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="466" y="134" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="167" y="135" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="530" y="139" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="120" y="140" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="245" y="318" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="405" y="318" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="246" y="339" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="404" y="339" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" type="background" x="268" y="382" rotation="0" clip_name="BgStones"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="554" y="403" rotation="0" clip_name="flower_6"/> <Object type="vulture" inverted="false" x="127" y="113" rotation="0" clip_name="VultureHere"/> <Object type="points_ghost" power="300" x="326" y="419" rotation="0" clip_name="PointsGhost300"/> </Level> ; private static const LEVEL_26:XML = <Level easy="12" normal="10" hard="6"> <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="92" y="253" rotation="0" clip_name="tree_8"/> <Object type="shooting_point" x="324" y="356" rotation="40.00077819824219" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="559" y="340" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <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="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="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="557" y="106" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <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" cloud_name="" cloud_prob="0.11"/> <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="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"/> <Object type="gibbet_obliquely" inverted="true" x="366" y="63" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="385" y="97" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="330" y="51" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="345" y="191" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="351" y="46" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="75" y="64" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="57" y="98" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="110" y="52" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="93" y="191" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="90" y="46" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="322" y="40" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="103" y="41" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="386" y="45" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="56" y="46" rotation="0" clip_name="Screw"/> <Object type="gibbet_obliquely" inverted="false" x="75" y="349" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="57" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="110" y="337" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="90" y="331" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="103" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="56" y="331" rotation="0" clip_name="Screw"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="224" y="105" rotation="59.248565673828125" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="220" y="429" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="220" y="361" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="220" y="395" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="434" y="429" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="434" y="361" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="434" y="395" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" type="background" x="447" y="351" rotation="0" clip_name="tree_1"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="313" y="424" rotation="0" clip_name="herb"/> <Object type="sun" x="471" y="66" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="points_ghost" power="500" x="551" y="67" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_27:XML = <Level easy="12" normal="9" hard="7"> <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="75" y="356" rotation="59.99946594238281" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="453" y="269" rotation="0" clip_name="tree_9"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="teleport_ghost" x="564" y="294" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="321" y="202" rotation="0" clip_name="ComposedStone99"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="202" y="223" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="589" y="402" rotation="0" clip_name="flower_6"/> <Object scaleX="1" scaleY="1" width="50.85" height="25.2" type="frontground" x="41" y="420" rotation="0" clip_name="flower_5"/> <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 type="static_box" is_stone="true" x="428" y="298" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="326" y="254" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="224" y="326" rotation="0" clip_name="Stone2"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="224" y="347" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="327" y="274" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="429" y="319" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="true" x="281" y="90" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_obliquely" inverted="false" x="365" y="89" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="346" y="124" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="383" y="72" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="395" y="77" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="388" y="67" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="346" y="72" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="false" x="298" y="123" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="263" y="72" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="251" y="77" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="243" y="66" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="298" y="72" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" type="background" x="244" y="383" rotation="0" clip_name="BgStones"/> <Object type="vulture" inverted="true" x="293" y="47" rotation="0" clip_name="InvertedVultureHere"/> </Level> ; private static const LEVEL_28:XML = <Level easy="5" normal="5" hard="2"> <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="371" y="161" rotation="0" clip_name="tree_7"/> <Object type="static_box" is_stone="true" x="324" y="217" rotation="0" clip_name="ComposedStone21"/> <Object type="shooting_point" x="445" y="405" rotation="-89.99563598632813" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="115" y="389" rotation="0.0428314208984375" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="85" y="297" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="141" y="297" rotation="0" clip_name="Stone1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="116" y="149" rotation="69.25181579589844" clip_name="ArrowGhost1"/> <Object type="tnt_barrel" x="113" y="259" 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="264" y="405" 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"/> <Object type="static_box" is_stone="true" x="18" y="297" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="52" y="297" rotation="0" clip_name="Stone2"/> <Object type="gibbet_obliquely" inverted="true" x="398" y="106" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="416" y="140" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="361" y="95" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="383" y="89" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="353" y="83" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="418" y="88" rotation="0" clip_name="Screw"/> <Object type="highlight" size="150" x="112" y="259" rotation="0" clip_name="ThisIsTNTHint"/> <Object type="highlight" size="150" x="114" y="389" rotation="0" clip_name="ThisIsSingleHedhehogHint"/> </Level> ; private static const LEVEL_29:XML = null; private static const LEVEL_30:XML = <Level easy="11" normal="8" hard="5"> <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="42" y="354" rotation="90" clip_name="BowPoint"/> <Object type="sun" x="320" y="62" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="-90" y="22" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="557" y="47" 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"/> <Object type="gibbet_obliquely" inverted="true" x="391" y="164" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="356" y="152" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="410" y="198" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="376" y="147" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="40" y="156" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="348" y="141" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="411" y="146" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="227" y="139" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="227" y="37" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="227" y="71" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="227" y="105" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="227" y="275" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="227" y="173" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="227" y="207" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="227" y="241" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="41" y="136" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="193" y="276" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="159" y="276" rotation="0" clip_name="Stone3"/> <Object type="teleport_ghost" x="172" y="225" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="226" y="421" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="227" y="309" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="227" y="342" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="50" y="276" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="16" y="276" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="471" y="276" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="437" y="276" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="403" y="276" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="370" y="276" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="336" y="276" rotation="0" clip_name="Stone2"/> <Object type="teleport_ghost" x="280" y="311" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="595" y="421" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="336" y="309" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="336" y="342" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="504" y="276" rotation="0" clip_name="Stone2"/> <Object type="gibbet_obliquely" inverted="false" x="455" y="163" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="437" y="197" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="490" y="153" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="470" y="147" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="483" y="142" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="436" y="147" rotation="0" clip_name="Screw"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="591" y="173" rotation="-16.412643432617188" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="270" y="128" rotation="110.11019897460938" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="227" y="3" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="227" y="-98" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="227" y="-64" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="227" y="-30" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="261" y="173" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="295" y="173" rotation="0" clip_name="Stone0"/> <Object type="vulture" inverted="false" x="443" y="117" rotation="0" clip_name="VultureHere"/> </Level> ; private static const LEVEL_31:XML = <Level easy="13" normal="8" hard="4"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <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"/> <Object type="gibbet_obliquely" inverted="false" x="71" y="296" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="53" y="330" rotation="0" clip_name="GibbetColumn"/> <Object scaleX="1" scaleY="1" type="background" x="-4" y="331" rotation="0" clip_name="Back1"/> <Object scaleX="1" scaleY="1" type="background" x="272" y="227" rotation="0" clip_name="tree_4"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="235" y="427" rotation="0" clip_name="herb"/> <Object type="shooting_point" x="320" y="401" rotation="1.2919464111328125" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="false" x="71" y="180" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="53" y="214" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="106" y="168" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="86" y="162" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="3" width="15.2" height="11.55" type="frontground" x="99" y="157" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="3" width="6.3" height="6.3" type="frontground" x="52" y="162" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="false" x="53" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="106" y="284" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="86" y="278" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="99" y="273" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="52" y="278" rotation="0" clip_name="Screw"/> <Object type="gibbet_obliquely" inverted="true" x="571" y="350" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="590" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_obliquely" inverted="true" x="571" y="238" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="590" y="272" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="536" y="226" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="556" y="221" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="528" y="215" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="591" y="220" rotation="0" clip_name="Screw"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="536" y="338" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="556" y="333" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="528" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="591" y="332" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="471" y="187" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="471" y="153" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="471" y="120" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="470" y="86" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="470" y="51" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="471" y="17" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="168" y="119" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="168" y="85" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="169" y="51" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="168" y="17" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="168" y="154" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="168" y="283" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="169" y="250" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="471" y="285" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="471" y="318" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="168" y="427" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="168" y="393" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="168" y="359" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="471" y="428" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="471" y="395" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="526" y="407" rotation="0" clip_name="flower_0"/> <Object scaleX="1" scaleY="1" width="28.45" height="36.5" type="frontground" x="83" y="397" rotation="0" clip_name="flower_4"/> <Object type="points_ghost" power="500" x="230" y="419" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_32:XML = <Level easy="15" normal="8" hard="3"> <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 type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="cloud" x="241" y="50" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="510" y="14" rotation="0" clip_name="Cloud0"/> <Object type="shooting_point" x="567" y="129" rotation="-89.99824523925781" clip_name="BowPoint"/> <Object type="cloud" x="-189" y="64" rotation="0" clip_name="Cloud6"/> <Object type="gibbet_obliquely" inverted="true" x="571" y="350" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="590" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="536" y="338" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="556" y="333" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="528" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="591" y="332" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="487" y="278" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="453" y="278" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="521" y="278" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="555" y="278" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="589" y="278" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="623" y="278" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="250" y="428" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="250" y="394" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="283" y="278" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="249" y="278" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="317" y="278" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="351" y="278" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="385" y="278" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="419" y="278" rotation="0" clip_name="Stone0"/> <Object type="teleport_ghost" x="82" y="383" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="dynamic_box" x="376" y="433" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="376" y="408" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="376" y="383" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="376" y="358" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="376" y="332" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="376" y="306" rotation="0" clip_name="Box"/> <Object type="tnt_barrel" x="328" y="424" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="vulture" inverted="false" x="242" y="239" rotation="0" clip_name="VultureHere"/> <Object scaleX="1" scaleY="1" type="background" x="105" y="383" rotation="0" clip_name="BgStones"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="474" y="403" rotation="0" clip_name="flower_6"/> <Object type="points_ghost" power="300" x="198" y="422" rotation="0" clip_name="PointsGhost300"/> </Level> ; private static const LEVEL_33:XML = <Level easy="20" normal="7" hard="1"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="shooting_point" x="64" y="118" rotation="89.05413818359375" clip_name="BowPoint"/> <Object type="sun" x="561" y="79" rotation="0" clip_name="States.PlayState::Sun"/> <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 scaleX="1" scaleY="1" type="background" x="347" y="158" rotation="0" clip_name="Mill"/> <Object scaleX="1" scaleY="1" type="background" x="175" y="157" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="-80" scaleX="0.9999687099823433" scaleY="0.9999687099823433" x="405" y="202" rotation="-44.99955749511719" clip_name="MillFan"/> <Object type="rotor" speed="80" scaleX="0.9999687099823433" scaleY="0.9999687099823433" x="233" y="201" rotation="-135.0004425048828" clip_name="MillFan"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="347" y="370" rotation="72.18597412109375" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="52" y="240" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="120" y="240" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="18" y="240" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="86" y="240" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="554" y="240" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="622" y="240" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="520" y="240" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="588" y="240" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="351" rotation="0" clip_name="Back3"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet_obliquely" inverted="true" x="567" y="349" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="586" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="531" y="338" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="552" y="332" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="585" y="332" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="523" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" type="background" x="400" y="368" rotation="0" clip_name="tree_2"/> <Object scaleX="1" scaleY="1" type="background" x="38" y="292" rotation="0" clip_name="tree_6"/> <Object scaleX="1" scaleY="1" width="44.95" height="42.55" type="frontground" x="249" y="401" rotation="0" clip_name="flower_3"/> <Object type="points_ghost" power="1000" x="600" y="195" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_34:XML = <Level easy="13" normal="9" hard="6"> <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="374" y="394" rotation="-60" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="31" y="229" rotation="0" clip_name="tree_4"/> <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="582" y="348" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="582" y="328" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="55" y="349" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="54" y="328" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="582" y="129" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="583" y="109" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="55" y="129" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="56" y="109" rotation="0" clip_name="Stone1"/> <Object type="cow" inverted="false" x="154" y="320" rotation="0" clip_name="CowHere"/> <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="322" y="65" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="static_box" is_stone="true" x="362" y="245" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="464" y="245" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="396" y="245" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="430" y="245" rotation="0" clip_name="Stone1"/> <Object type="cow" inverted="true" x="491" y="104" rotation="0" clip_name="InvertedCowHere"/> <Object type="teleport_ghost" x="273" y="194" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="194" y="133" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="194" y="65" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="194" y="167" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="194" y="99" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="498" y="245" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="328" y="245" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" type="background" x="392" y="293" rotation="0" clip_name="tree_6"/> <Object type="points_ghost" power="500" x="582" y="284" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_35:XML = null; private static const LEVEL_36:XML = <Level easy="7" normal="4" hard="2"> <Object scaleX="1" scaleY="1" type="background" x="0" y="-9" rotation="0" clip_name="Background"/> <Object type="static_box" is_stone="false" x="566" y="184" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_obliquely" inverted="true" x="548" y="80" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="cloud" x="108" y="96" rotation="0" clip_name="Cloud3"/> <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 type="cloud" x="-126" y="27" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="269" y="18" rotation="0" clip_name="Cloud0"/> <Object type="sun" x="80" y="66" 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="562" y="406" rotation="0" clip_name="flower_0"/> <Object scaleX="1" scaleY="1" type="background" x="324" y="229" rotation="0" clip_name="tree_4"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="224" y="427" rotation="0" clip_name="herb"/> <Object type="gibbet_ground" x="539" y="268" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="566" y="115" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="532" y="64" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="LEFT_LOWER_LEG" connect_legs="true" chains_count="11" x="520" y="69" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="shooting_point" x="538" y="375" rotation="-75.00106811523438" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="512" y="58" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="567" y="63" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" type="background" x="202" y="252" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="-50" scaleX="1" scaleY="1" x="260" y="296" rotation="90" clip_name="MillFan"/> <Object type="hedhehog_ghost" speed="30" charge="4" x="115" y="286" rotation="34.9725341796875" clip_name="ArrowGhost4"/> <Object scaleX="1" scaleY="1" type="background" x="18" y="368" rotation="0" clip_name="tree_2"/> <Object type="points_ghost" power="500" x="140" y="416" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_37:XML = <Level easy="15" normal="10" hard="2"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="cloud" x="514" y="8" rotation="0" clip_name="Cloud8"/> <Object scaleX="1" scaleY="1" type="background" x="-2" y="352" rotation="0" clip_name="Back3"/> <Object scaleX="1" scaleY="1" type="background" x="151" y="159" rotation="0" clip_name="tree_7"/> <Object type="sun" x="86" y="97" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="35" y="351" rotation="59.99946594238281" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="481" y="427" rotation="0" clip_name="herb"/> <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="static_box" is_stone="false" x="556" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="504" y="315" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="9" x="462" y="176" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="true" x="538" y="188" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_obliquely" inverted="true" x="539" y="328" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="556" y="221" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="556" y="339" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="522" y="171" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="485" y="171" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="521" y="312" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="463" y="311" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="455" y="165" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="497" y="307" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="556" y="311" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="556" y="171" rotation="0" clip_name="Screw"/> <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="points_ghost" power="500" x="529" y="137" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" width="28.45" height="36.5" type="frontground" x="51" y="397" rotation="0" clip_name="flower_4"/> <Object type="highlight" size="150" x="34" y="351" rotation="0" clip_name="InvertControlHint"/> </Level> ; private static const LEVEL_38:XML = <Level easy="2" normal="2" hard="1"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object type="ammo_ghost" power="3" x="131" y="181" rotation="0" clip_name="AmmoGhost3"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="347" rotation="0" clip_name="Back4"/> <Object type="shooting_point" x="284" y="336" rotation="-45" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="360" y="268" rotation="0" clip_name="tree_9"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" width="50.85" height="25.2" type="frontground" x="166" y="421" rotation="0" clip_name="flower_5"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="569" y="403" 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="gibbet_obliquely" inverted="true" x="546" y="113" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="565" y="147" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="510" y="101" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_ground" x="525" y="241" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="531" y="96" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="502" y="90" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="566" y="95" rotation="0" clip_name="Screw"/> <Object type="gibbet_obliquely" inverted="false" x="95" y="349" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="77" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="130" y="337" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="false" x="95" y="232" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="77" y="266" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="130" y="220" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="110" y="214" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="123" y="209" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="76" y="214" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="false" x="110" y="331" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="123" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="76" y="331" rotation="0" clip_name="Screw"/> <Object type="vulture" inverted="true" x="561" y="69" rotation="0" clip_name="InvertedVultureHere"/> <Object type="highlight" size="150" x="129" y="181" rotation="0" clip_name="AmmoHint"/> </Level> ; private static const LEVEL_39:XML = <Level easy="6" normal="4" hard="3"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="cloud" x="514" y="8" rotation="0" clip_name="Cloud8"/> <Object scaleX="1" scaleY="1" type="background" x="-2" y="352" rotation="0" clip_name="Back3"/> <Object scaleX="1" scaleY="1" type="background" x="159" y="228" rotation="0" clip_name="tree_4"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="296" y="341" rotation="59.99946594238281" clip_name="BowPoint"/> <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="380" y="426" rotation="0" clip_name="herb"/> <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="static_box" is_stone="false" x="565" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="416" y="310" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet_obliquely" inverted="true" x="547" y="188" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_obliquely" inverted="true" x="548" y="328" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="565" y="221" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="565" y="339" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="531" y="305" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="442" y="305" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="409" y="299" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="565" y="305" rotation="0" clip_name="Screw"/> <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="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="513" y="175" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="530" y="172" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="506" y="167" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="565" y="171" rotation="0" clip_name="Screw"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="465" y="310" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="458" y="299" rotation="0" clip_name="RopeRings"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="514" y="310" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="507" y="299" rotation="0" clip_name="RopeRings"/> <Object type="gibbet_obliquely" inverted="false" x="95" y="349" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="77" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="121" y="337" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="110" y="331" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="140" y="331" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="114" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="76" y="331" rotation="0" clip_name="Screw"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="166" y="337" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="159" y="326" rotation="0" clip_name="RopeRings"/> <Object type="vulture" inverted="true" x="560" y="144" rotation="0" clip_name="InvertedVultureHere"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="499" y="407" rotation="0" clip_name="flower_0"/> <Object type="points_ghost" power="500" x="109" y="299" rotation="0" clip_name="PointsGhost500"/> <Object type="highlight" size="150" x="143" y="342" rotation="0" clip_name="ComboSave2Hint"/> <Object type="highlight" size="150" x="463" y="314" rotation="0" clip_name="ComboSave3Hint"/> </Level> ; private static const LEVEL_40:XML = <Level easy="15" normal="10" hard="6"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="cloud" x="495" y="8" rotation="0" clip_name="Cloud8"/> <Object scaleX="1" scaleY="1" type="background" x="-2" y="352" rotation="0" clip_name="Back3"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="550" y="358" rotation="-75.00106811523438" clip_name="BowPoint"/> <Object type="sun" x="88" y="76" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="484" y="428" rotation="0" clip_name="herb"/> <Object type="cloud" x="696" y="95" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="366" y="92" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="-30" y="5" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-152" y="55" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="134" y="104" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="217" y="11" rotation="0" clip_name="Cloud1"/> <Object type="gibbet_obliquely" inverted="true" x="272" y="112" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_obliquely" inverted="false" x="401" y="114" rotation="0" clip_name="GibbetObliquely"/> <Object type="gibbet_ground" x="430" y="245" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="383" y="148" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="420" y="97" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="442" y="102" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="434" y="91" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="382" y="97" rotation="0" clip_name="Screw"/> <Object type="gibbet_ground" x="243" y="243" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="291" y="147" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="256" y="96" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="233" y="101" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="225" y="90" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="291" y="96" rotation="0" clip_name="Screw"/> <Object type="dynamic_box" x="142" y="432" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="142" y="407" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="142" y="382" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="142" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="142" y="332" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="142" y="307" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="142" y="282" rotation="0" clip_name="Box"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="62" y="362" rotation="22.49932861328125" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="338" y="17" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="338" y="85" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="338" y="51" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" type="background" x="271" y="253" rotation="0" clip_name="tree_8"/> <Object scaleX="1" scaleY="1" width="44.95" height="42.55" type="frontground" x="193" y="401" rotation="0" clip_name="flower_3"/> <Object type="points_ghost" power="500" x="419" y="67" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_41:XML = null; private static const LEVEL_42:XML = <Level easy="6" normal="5" hard="1"> <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="shooting_point" x="374" y="399" rotation="-90" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="-142" y="148" rotation="0" clip_name="tree_5"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="cloud" x="554" y="36" rotation="0" clip_name="Cloud2"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="210" y="425" 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="662" y="57" rotation="-0.7745513916015625" clip_name="Cloud1"/> <Object type="dynamic_box" x="481" y="248" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="512" y="235" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="541" y="221" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="571" y="207" rotation="-24.79864501953125" clip_name="Box"/> <Object type="gibbet_obliquely" inverted="false" x="112" y="348" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="94" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="131" y="331" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="153" y="336" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="145" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="93" y="331" rotation="0" clip_name="Screw"/> <Object type="dynamic_box" x="421" y="275" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="452" y="262" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="362" y="303" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="392" y="289" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="302" y="330" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="332" y="316" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="602" y="193" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="632" y="179" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="663" y="165" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="693" y="152" rotation="-24.79864501953125" clip_name="Box"/> <Object type="static_box" is_stone="false" x="544" y="240" rotation="65.55828857421875" clip_name="BigStick"/> <Object type="dynamic_box" x="723" y="138" rotation="-24.79864501953125" clip_name="Box"/> <Object type="dynamic_box" x="753" y="125" rotation="-24.79864501953125" clip_name="Box"/> <Object scaleX="1" scaleY="1" type="background" x="468" y="293" rotation="0" clip_name="tree_6"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="408" y="408" rotation="0" clip_name="flower_0"/> <Object type="points_ghost" power="500" x="601" y="419" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_43:XML = <Level easy="15" normal="10" hard="1"> <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="345" rotation="0" clip_name="Back4"/> <Object scaleX="1" scaleY="1" type="background" x="12" y="233" rotation="0" clip_name="tree_10"/> <Object type="static_box" is_stone="false" x="388" y="171" rotation="180" clip_name="GibbetStick"/> <Object type="shooting_point" x="146" y="245" rotation="59.99946594238281" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="506" y="269" rotation="0" clip_name="tree_9"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <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="cloud" x="630" y="61" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="-196" y="32" rotation="0" clip_name="Cloud0"/> <Object type="static_box" is_stone="false" x="318" y="383" rotation="0" clip_name="GibbetColumn"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="457" y="132" rotation="179.9947509765625" clip_name="ArrowGhost1"/> <Object type="gibbet_obliquely" inverted="false" x="336" y="188" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="318" y="303" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="318" y="223" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="355" y="171" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="377" y="178" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="369" y="166" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="317" y="171" rotation="0" clip_name="Screw"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="523" y="149" rotation="-102.53750610351563" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="458" y="200" rotation="-110.002197265625" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="458" y="275" rotation="-63.17466735839844" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="458" y="312" rotation="-45.86366271972656" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="458" y="237" rotation="-90.3619384765625" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="458" y="349" rotation="-36.72578430175781" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="458" y="386" rotation="-31.76019287109375" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="458" y="424" rotation="-20.801681518554688" clip_name="ArrowGhost1"/> <Object scaleX="1" scaleY="1" type="background" x="174" y="384" rotation="0" clip_name="BgStones"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="370" y="401" rotation="0" clip_name="flower_6"/> </Level> ; private static const LEVEL_44:XML = <Level easy="20" normal="15" hard="10"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-5" y="280" rotation="0" clip_name="BonusGameBack"/> <Object type="shooting_point" x="41" y="310" rotation="1.254364013671875" clip_name="BowPoint"/> <Object type="teleport_ghost" x="168" y="278" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <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"/> <Object type="static_box" is_stone="true" x="101" y="88" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="101" y="122" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="101" y="156" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="101" y="188" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="101" y="-47" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="101" y="-13" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="101" y="20" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="101" y="54" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="101" y="401" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="101" y="435" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="101" y="469" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="101" y="501" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="101" y="265" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="101" y="299" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="101" y="333" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="101" y="367" rotation="0" clip_name="Stone3"/> <Object type="tnt_barrel" x="101" y="227" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="static_box" is_stone="true" x="246" y="104" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="246" y="138" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="246" y="172" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="246" y="204" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="246" y="-31" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="246" y="2" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="246" y="36" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="246" y="70" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="246" y="237" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="246" y="271" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="246" y="303" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="246" y="414" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="246" y="448" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="246" y="482" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="246" y="514" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="246" y="380" rotation="0" clip_name="Stone3"/> <Object type="tnt_barrel" x="246" y="342" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="teleport_ghost" x="310" y="391" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="386" y="144" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="386" y="178" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="386" y="212" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="386" y="244" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="386" y="8" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="386" y="42" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="386" y="76" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="386" y="110" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="386" y="-25" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="386" y="-127" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="386" y="-93" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="386" y="-59" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="386" y="-161" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="386" y="456" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="386" y="490" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="386" y="524" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="386" y="556" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="386" y="320" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="386" y="354" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="386" y="388" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="386" y="422" rotation="0" clip_name="Stone3"/> <Object type="tnt_barrel" x="385" y="283" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="teleport_ghost" x="452" y="306" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="589" y="188" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="590" y="167" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="524" y="69" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="524" y="103" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="524" y="137" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="524" y="169" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="524" y="-66" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="524" y="-32" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="524" y="1" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="524" y="35" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="524" y="381" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="524" y="415" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="524" y="449" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="524" y="481" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="524" y="245" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="524" y="279" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="524" y="313" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="524" y="347" rotation="0" clip_name="Stone3"/> <Object type="tnt_barrel" x="523" y="207" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="points_ghost" power="300" x="40" y="83" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="500" x="173" y="84" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="317" y="82" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="455" y="83" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_45:XML = <Level easy="10" normal="10" hard="1"> <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 type="shooting_point" x="66" y="408" rotation="85.00143432617188" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="true" x="227" y="362" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="227" y="396" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="227" y="430" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="227" y="230" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="227" y="263" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="227" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="227" y="328" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="227" y="164" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="227" y="197" rotation="0" clip_name="Stone2"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="362" y="184" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="581" y="401" 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 type="static_box" is_stone="true" x="128" y="295" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="128" y="329" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="128" y="363" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="128" y="159" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="128" y="193" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="128" y="227" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="128" y="261" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="128" y="91" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="128" y="125" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="229" y="58" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="195" y="58" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="297" y="58" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="263" y="58" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="161" y="58" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="127" y="58" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="364" y="58" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="330" y="58" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="432" y="58" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="398" y="58" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="499" y="58" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="465" y="58" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="533" y="58" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="533" y="330" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="533" y="364" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="533" y="398" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="533" y="430" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="533" y="194" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="533" y="228" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="533" y="262" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="533" y="296" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="533" y="126" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="533" y="160" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="533" y="92" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="295" y="164" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="261" y="164" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="363" y="164" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="329" y="164" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="431" y="164" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="397" y="164" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="432" y="266" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="432" y="300" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="432" y="334" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="432" y="198" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="432" y="232" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="399" y="334" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="365" y="334" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="331" y="334" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="295" y="429" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="261" y="429" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="363" y="429" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="329" y="429" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="431" y="429" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="397" y="429" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="499" y="429" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="465" y="429" rotation="0" clip_name="Stone3"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="177" y="406" rotation="0" clip_name="ArrowGhost1"/> <Object type="points_ghost" power="500" x="178" y="210" rotation="0" clip_name="PointsGhost500"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="177" y="119" rotation="74.12783813476563" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="477" y="114" rotation="180" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="477" y="375" rotation="-81.24911499023438" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="281" y="375" rotation="0" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="281" y="224" rotation="72.00785827636719" clip_name="ArrowGhost1"/> <Object type="points_ghost" power="500" x="374" y="379" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="281" y="295" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="482" y="290" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="482" y="198" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="381" y="111" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="267" y="112" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="178" y="317" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_46:XML = <Level easy="6" normal="4" hard="2"> <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="476" y="229" rotation="0" clip_name="tree_4"/> <Object type="shooting_point" x="517" y="407" rotation="-24.001083374023438" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="sun" x="86" y="77" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="475" y="427" 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"/> <Object type="gibbet_obliquely" inverted="true" x="546" y="96" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_ground" x="517" y="227" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="565" y="131" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="530" y="80" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="518" y="85" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="511" y="74" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="565" y="79" rotation="0" clip_name="Screw"/> <Object type="gibbet_obliquely" inverted="false" x="70" y="350" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="52" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="89" y="332" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="99" y="338" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="91" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="51" y="332" rotation="0" clip_name="Screw"/> <Object type="cow" inverted="false" x="246" y="321" rotation="0" clip_name="CowHere"/> <Object type="hedhehog_ghost" speed="30" charge="3" x="396" y="146" rotation="59.1846923828125" clip_name="ArrowGhost3"/> <Object scaleX="1" scaleY="1" type="background" x="88" y="350" rotation="0" clip_name="tree_1"/> <Object type="vulture" inverted="false" x="58" y="303" rotation="0" clip_name="VultureHere"/> <Object type="points_ghost" power="500" x="219" y="418" rotation="0" clip_name="PointsGhost500"/> <Object type="highlight" size="150" x="394" y="146" rotation="0" clip_name="ThisIsHedhehogHint"/> </Level> ; private static const LEVEL_47:XML = null; private static const LEVEL_48:XML = <Level easy="25" normal="16" hard="14"> <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="102" y="93" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="cloud" x="240" y="417" 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="shooting_point" x="65" y="424" rotation="-1.4911651611328125" clip_name="BowPoint"/> <Object type="tnt_barrel" x="153" y="288" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="teleport_ghost" x="65" y="290" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="237" y="290" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="tnt_barrel" x="238" y="187" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="teleport_ghost" x="410" y="127" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="240" y="127" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="tnt_barrel" x="65" y="347" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="38" y="136" rotation="60.693389892578125" clip_name="ArrowGhost1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="567" y="91" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="628" y="75" rotation="0" clip_name="BrickNoLeft"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="426" y="210" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="380" y="263" rotation="45.00044250488281" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="27" y="383" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="354" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="383" rotation="0" clip_name="BrickNoLeft"/> <Object type="static_box" is_stone="true" x="102" y="383" rotation="0" clip_name="BrickNoRight"/> <Object type="static_box" is_stone="true" x="152" y="324" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="253" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="224" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="194" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="165" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="136" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="106" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="77" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="1" y="77" rotation="0" clip_name="BrickNoRight"/> <Object type="static_box" is_stone="true" x="202" y="223" rotation="0" clip_name="BrickNoLeft"/> <Object type="static_box" is_stone="true" x="326" y="252" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="326" y="223" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="326" y="194" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="326" y="164" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="326" y="93" rotation="0" clip_name="Brick"/> <Object type="tnt_barrel" x="325" y="129" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="static_box" is_stone="true" x="327" y="64" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="276" y="223" rotation="0" clip_name="BrickNoRight"/> <Object type="static_box" is_stone="true" x="476" y="193" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="164" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="75" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="102" y="77" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="51" y="77" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="308" y="358" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="326" y="340" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="326" y="311" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="326" y="281" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="427" y="193" rotation="0" clip_name="BrickNoRight"/> <Object type="static_box" is_stone="true" x="476" y="310" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="281" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="251" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="399" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="370" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="340" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="428" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="326" y="35" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="327" y="6" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="426" y="340" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="376" y="340" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="476" y="222" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="46" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="17" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="-12" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="578" y="75" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="476" y="457" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="476" y="486" rotation="0" clip_name="Brick"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="237" y="426" rotation="59.949005126953125" clip_name="ArrowGhost1"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="398" y="358" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="528" y="263" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="526" y="245" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="441" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="152" y="471" rotation="0" clip_name="BrickNoLeft"/> <Object type="static_box" is_stone="true" x="152" y="412" rotation="0" clip_name="Brick"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="600" y="248" rotation="-111.32699584960938" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="527" y="75" rotation="0" clip_name="BrickNoRightNoLeft"/> </Level> ; private static const LEVEL_49:XML = <Level easy="4" normal="3" hard="2"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="shooting_point" x="528" y="211" 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="344" y="307" 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="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="425" y="149" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="290" y="101" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="359" y="125" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="points_ghost" power="500" x="415" y="85" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="337" y="58" rotation="0" clip_name="PointsGhost1000"/> <Object type="static_box" is_stone="false" x="162" y="50" rotation="-70.92567443847656" clip_name="BigStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="425" y="267" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="290" y="336" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="359" y="301" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="false" x="175" y="383" rotation="-116.60211181640625" clip_name="BigStick"/> <Object type="points_ghost" power="500" x="415" y="409" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="341" y="440" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_50:XML = <Level easy="15" normal="10" hard="5"> <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="575" y="69" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="shooting_point" x="55" y="380" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="static_box" is_stone="true" x="576" y="51" 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="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="575" y="225" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="576" y="207" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="575" y="371" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="576" y="353" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="413" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="384" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="471" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="442" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="256" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="315" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="286" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="127" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="186" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="157" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="-1" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="98" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="301" y="28" rotation="0" clip_name="Brick"/> <Object type="teleport_ghost" x="54" y="249" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="54" y="91" rotation="0" clip_name="States.PlayState::TeleportGhost"/> </Level> ; private static const LEVEL_51:XML = <Level easy="12" normal="8" hard="4"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="cloud" x="172" y="379" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="692" y="441" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="288" y="416" rotation="0" clip_name="Cloud8"/> <Object type="shooting_point" x="322" y="426" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="static_box" is_stone="true" x="227" y="408" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="227" y="466" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="227" y="437" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="417" y="408" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="417" y="466" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="417" y="437" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="227" y="379" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="227" y="350" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="417" y="379" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="417" y="350" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="160" y="277" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="482" y="277" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="160" y="153" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="160" y="248" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="160" y="182" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="482" y="153" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="482" y="248" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="482" y="182" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="535" y="200" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="106" y="199" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="160" y="407" rotation="-52.9097900390625" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="479" y="408" rotation="57.70005798339844" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="160" y="123" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="482" y="123" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="567" y="353" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="81" y="354" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="83" y="336" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="567" y="336" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="60" y="182" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="583" y="182" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="533" y="182" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="110" y="182" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="points_ghost" power="1000" x="95" y="140" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_52:XML = <Level easy="6" normal="5" hard="4"> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="shooting_point" x="303" y="423" rotation="-60.00077819824219" clip_name="BowPoint"/> <Object type="cloud" x="110" y="390" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="640" y="423" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="517" y="390" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="343" y="401" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="-56" y="397" rotation="0" clip_name="Cloud7"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="58" y="266" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="48" y="190" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="48" y="247" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="48" y="218" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="48" y="160" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="48" y="131" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="48" y="101" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="148" y="247" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="148" y="101" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="238" y="189" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="238" y="247" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="238" y="218" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="238" y="160" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="238" y="131" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="238" y="101" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="372" y="190" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="372" y="248" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="372" y="219" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="372" y="161" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="372" y="132" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="372" y="102" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="462" y="189" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="462" y="247" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="462" y="218" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="462" y="160" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="462" y="131" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="462" y="101" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="595" y="189" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="595" y="218" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="595" y="160" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="595" y="131" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="304" y="190" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="562" y="101" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="562" y="247" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="137" y="266" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="237" y="266" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="372" y="267" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="472" y="266" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="551" y="266" rotation="0" clip_name="HangerPoint" cloud_name="" cloud_prob="0.11"/> <Object type="static_box" is_stone="true" x="97" y="101" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="97" y="175" rotation="0" clip_name="BrickNoLeft"/> <Object type="static_box" is_stone="true" x="97" y="247" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="287" y="160" rotation="0" clip_name="BrickNoLeft"/> <Object type="static_box" is_stone="true" x="321" y="219" rotation="0" clip_name="BrickNoRight"/> <Object type="static_box" is_stone="true" x="511" y="247" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="512" y="101" rotation="0" clip_name="BrickNoRightNoLeft"/> </Level> ; public static const LEVELS:Array = [LEVEL_0, LEVEL_37, LEVEL_38, LEVEL_39, LEVEL_7, LEVEL_5, LEVEL_28, LEVEL_6, LEVEL_33, LEVEL_19, LEVEL_45, LEVEL_11, LEVEL_46, LEVEL_8, LEVEL_9, LEVEL_26, LEVEL_18, LEVEL_17, LEVEL_43, LEVEL_42, LEVEL_31, LEVEL_40, LEVEL_1, LEVEL_23, LEVEL_25, LEVEL_4, LEVEL_30, LEVEL_3, LEVEL_15, LEVEL_29, LEVEL_14, LEVEL_2, LEVEL_10, LEVEL_13, LEVEL_22, LEVEL_35, LEVEL_12, LEVEL_32, LEVEL_34, LEVEL_21, LEVEL_16, LEVEL_41, LEVEL_24, LEVEL_27, LEVEL_20, LEVEL_44, LEVEL_36, LEVEL_47, LEVEL_49, LEVEL_50, LEVEL_51, LEVEL_48, LEVEL_52]; } }//package States.PlayState
Section 132
//MapObject (States.PlayState.MapObject) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class MapObject extends MovieClip { protected var m_body:b2Body;// = null protected var m_liveTime:Number;// = 0 protected var m_isDead:Boolean;// = false public function goTop(_arg1:Sprite, _arg2:Sprite, _arg3:Sprite, _arg4:Sprite, _arg5:Sprite):void{ } public function onStop():void{ } public function onResume():void{ } public function get body():b2Body{ return (m_body); } public function set body(_arg1:b2Body):void{ m_body = _arg1; } public function canStickInMe():Boolean{ return (true); } public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ } public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ } public function isItYourFixture(_arg1:b2Fixture):Boolean{ return ((_arg1.GetBody() == m_body)); } public function update(_arg1:Number):void{ } public function connectWithBody(_arg1:b2Body):void{ this.body = _arg1; m_body.SetUserData(this); } public function isDead():Boolean{ return (m_isDead); } public function onDead(_arg1:b2World):void{ } } }//package States.PlayState
Section 133
//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; } private function set scale(_arg1:Number):void{ scaleX = _arg1; scaleY = _arg1; } private function get scale():Number{ return (scaleX); } 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; }; } } }//package States.PlayState
Section 134
//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 Main.*; import flash.geom.*; import flash.display.*; import Ragdoll.*; import flash.utils.*; import SWFStats.*; import States.*; import flash.system.*; import flash.ui.*; public class PlayState extends PhysGameState { private const STATE_NOT_INITILIAZED:int = -1; private const STATE_NORMAL:int = 0; private const STATE_TAKE_AIM:int = 1; private const STATE_SHOOTING:int = 2; private const STATE_TELEPORT:int = 3; private const STATE_SCROLLING_FORWARD:int = 4; private const STATE_SHOW_HIGHLIGHT:int = 5; private var m_tmpScores:int;// = 0 private var m_mapObjects:Array; private var m_bow:Bow; private var m_turtorialFrames:Array; private var m_turtorialFrame:TurtorialFrame; private var m_guiLayer:Sprite; private var m_layersContainer:Sprite; private var m_backgroundLayer:Sprite; private var m_cloudsLayer:Sprite; private var m_staticLayer:Sprite; private var m_dynamicLayer:Sprite; private var m_frontLayer:Sprite; private var m_arrowsLayer:Sprite; private var m_savedCount:int;// = 0 private var m_killedCount:int;// = 0 private var m_moreGamesPanel:MoreGamesPanel; private var m_state:int;// = -1 private var m_arrows:Array; private var m_contactListener:b2ContactListener; private var m_arrowsLeft:int; private var m_sightClip:MovieClip; private var m_oldSightClip:MovieClip; private var m_nextState:GameState;// = null private var m_nextStateTimer:Timer; private var m_shootingPower:Number; private var m_arrowBodyToBodyContacts:Dictionary; private var m_arrowHeadsToBodyContacts:Dictionary; private var m_allStones:Array; private var m_gibbetsOnLevel:int; private var m_camera:Camera; public static var m_currentScores:int = 0; public static var m_arrowsUsed:int; public static var m_curLevel:int = 0; public static var m_wasStar:Boolean = true; public static var m_deadID:int; private static var m_instance:PlayState = null; 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 getArrowsLayer():Sprite{ return (m_arrowsLayer); } override public function onStop():void{ var _local1:MapObject; for each (_local1 in m_mapObjects) { _local1.onStop(); }; if (m_nextState){ m_nextStateTimer.stop(); }; } override public function onResume():void{ var _local1:MapObject; for each (_local1 in m_mapObjects) { _local1.onResume(); }; if (m_nextState){ m_nextStateTimer.start(); }; } public function getCurrentLevelCompleted():int{ return (m_curLevel); } public function getWorld():b2World{ return (m_world); } public function addArrows(_arg1:int, _arg2:Number, _arg3:Number):void{ m_arrowsLeft = (m_arrowsLeft + _arg1); recalcGui(); var _local4:AddPointsEffect = new AddPointsEffect(_arg1, 1, _arg2, _arg3, " arrows"); m_frontLayer.addChild(_local4); m_mapObjects.push(_local4); } private function 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; if (m_oldSightClip){ m_oldSightClip.x = -1000; }; break; }; } override public function handleKeyDown(_arg1:KeyboardEvent):void{ super.handleKeyDown(_arg1); if (_arg1.keyCode == 80){ StateManager.getInstance().pushState(new GamePausedState()); return; }; if (((Constant.m_debugMode) && ((_arg1.keyCode == Keyboard.DOWN)))){ m_debugSprite.visible = !(m_debugSprite.visible); }; if (_arg1.keyCode == 82){ onReplayClick(null); }; } 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 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 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); } 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 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 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 onMenuClick(_arg1:MouseEvent):void{ if ((((m_nextState == null)) || ((m_nextState is LoseState)))){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); }; } 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; m_moreGamesPanel = null; super.onCleanup(); } override public function onInit():void{ var _local1:String; var _local2:XML; var _local3:String; var _local4:XML; var _local5:TargetedCamera; super.onInit(); Log.LevelCounterMetric("start level", m_curLevel); 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) == 0){ SoundManager.playLoop(SoundConst.AMBIENT_1); } else { SoundManager.playLoop(SoundConst.AMBIENT_2); }; }; m_gibbetsOnLevel = 0; m_deadID = -1; m_arrowsUsed = 0; m_currentScores = 0; 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); }; if (GameData.haveAchievement(Achievements.WITH_STAR_40)){ m_arrowsLeft++; }; 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_moreGamesPanel = new MoreGamesPanel(true); m_view.addChild(m_moreGamesPanel); 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 parseLevel(_arg1:XML):void{ var _local2:XML; var _local3:MapObject; var _local4:Number; var _local5:Number; var _local6:b2Vec2; var _local7:Number; var _local8:DisplayObject; var _local9:b2Fixture; var _local10:TurtorialFrame; switch (GameData.getDifficulty()){ case GameData.EASY_MODE: m_arrowsLeft = _arg1.@easy; break; case GameData.NORMAL_MODE: m_arrowsLeft = _arg1.@normal; break; case GameData.HARD_MODE: m_arrowsLeft = _arg1.@hard; break; case GameData.NOT_SELECTED_MODE: m_arrowsLeft = 99; break; }; for each (_local2 in _arg1.elements("Object")) { _local4 = _local2.@x; _local5 = _local2.@y; _local6 = new b2Vec2((_local4 / m_physScale), (_local5 / m_physScale)); _local7 = _local2.@rotation; if (String(_local2.@clip_name) != ""){ _local8 = (new ((getDefinitionByName(_local2.@clip_name) as Class)) as DisplayObject); _local8.x = _local4; _local8.y = _local5; _local8.rotation = _local7; }; switch (String(_local2.@type)){ case ParserConst.TYPE_EDGE_MARKER: if (_local2.@is_left == "true"){ _local8.name = Constant.LEFT_EDGE_MARKER_NAME; } else { _local8.name = Constant.RIGHT_EDGE_MARKER_NAME; }; m_layersContainer.addChild(_local8); _local8.alpha = 0; break; case ParserConst.TYPE_STATIC_BOX: _local8.cacheAsBitmap = true; _local9 = createStaticBoxFromClip(_local8, m_staticLayer); if (_local2.@is_stone == "true"){ m_allStones.push(_local9); }; break; case ParserConst.TYPE_GROUND: _local8.cacheAsBitmap = true; _local8.scaleY = 0.75; createStaticBoxFromClip(_local8, m_staticLayer); _local8.scaleY = 1; break; case ParserConst.TYPE_DYNAMIC_BOX: createDynamicBoxFromClip(m_dynamicLayer, _local8); break; case ParserConst.TYPE_VULTURE: createVulture(_local8, (_local2.@inverted == "true")); break; case ParserConst.TYPE_TNT_BARREL: createTNTBarrel(_local8); break; case ParserConst.TYPE_CLOUD: createCloud(_local8); break; case ParserConst.TYPE_GIBBET_GROUND: createGibbletGround(_local4, _local5); break; case ParserConst.TYPE_GIBBET: createGibbet(_local6, _local2.@pers_id, _local2.@path_to_hang, _local2.@chains_count, (_local2.@connect_legs == "true"), _local2.@cloud_name, _local2.@cloud_prob); break; case ParserConst.TYPE_SHOOTING_POINT: m_bow.x = _local4; m_bow.y = _local5; m_bow.rotation = (_local7 + 90); break; case ParserConst.TYPE_AMMO_GHOST: createAmmoGhost(_local8, _local2.@power); break; case ParserConst.TYPE_POINTS_GHOST: createPointsGhost(_local8, _local2.@power); break; case ParserConst.TYPE_TELEPORT_GHOST: createTeleportGhost(_local8); break; case ParserConst.TYPE_SUN: createSun(_local6); break; case ParserConst.TYPE_BACKGROUND: _local8.cacheAsBitmap = true; _local8.scaleX = _local2.@scaleX; _local8.scaleY = _local2.@scaleY; m_backgroundLayer.addChild(_local8); break; case ParserConst.TYPE_FRONTGROUND: _local8.scaleX = _local2.@scaleX; _local8.scaleY = _local2.@scaleY; _local8.width = _local2.@width; _local8.height = _local2.@height; m_frontLayer.addChild(_local8); break; case ParserConst.TYPE_ROTOR: _local8.scaleX = _local2.@scaleX; _local8.scaleY = _local2.@scaleY; createRotorFromClip(_local8, _local2.@speed); break; case ParserConst.TYPE_HEDHEHOG_GHOST: createHedgehogGhost(_local8, _local2.@charge, _local2.@speed); break; case ParserConst.TYPE_HIGHLIGHT: if (((!(GameData.isAlreadyPlayed(m_curLevel))) && (GameData.isHintsOn()))){ _local10 = new TurtorialFrame(_local2.@size, _local8); _local10.x = _local4; _local10.y = _local5; _local8.x = 0; _local8.y = 0; m_turtorialFrames.push(_local10); }; break; case ParserConst.TYPE_GIBBET_OBLIQUELY: _local8.cacheAsBitmap = true; createGibbetObliquely(_local8, (_local2.@inverted == "true")); break; case ParserConst.TYPE_COW: createCow(_local8, (_local2.@inverted == true)); break; }; }; for each (_local3 in m_mapObjects) { _local3.goTop(m_backgroundLayer, m_cloudsLayer, m_staticLayer, m_dynamicLayer, m_frontLayer); }; } private function parseClipToXML(_arg1:MovieClip):XML{ var _local4:XML; var _local5:DisplayObject; var _local2:XML = <Level easy="10" normal="10" hard="10"></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); } public function getView():Sprite{ return (m_view); } 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 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(); } 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 startTeleportHere(_arg1:b2Vec2):void{ m_bow.startTeleport(new Point((_arg1.x * m_physScale), (_arg1.y * m_physScale))); setState(STATE_TELEPORT); } 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; }; } private function onTurtotialFrameClick(_arg1:MouseEvent):void{ if (m_state == STATE_SHOW_HIGHLIGHT){ hideHighlight(); }; } private function highlightZone(_arg1:TurtorialFrame):void{ m_state = STATE_SHOW_HIGHLIGHT; if (((m_turtorialFrame) && (m_turtorialFrame.parent))){ if (m_turtorialFrame.getTextClip()){ m_turtorialFrame.getTextClip().removeEventListener(MouseEvent.CLICK, onTurtotialFrameClick); }; if (m_turtorialFrame.getClickSign()){ m_turtorialFrame.getClickSign().removeEventListener(MouseEvent.CLICK, onTurtotialFrameClick); }; m_turtorialFrame.removeEventListener(MouseEvent.CLICK, onTurtotialFrameClick); this.removeChild(m_turtorialFrame); }; m_turtorialFrame = _arg1; this.addChild(m_turtorialFrame); var _local2:ClickToContinue = new ClickToContinue(); _local2.buttonMode = true; this.addChild(_local2); _local2.x = 320; _local2.y = 460; m_turtorialFrame.setClickSign(_local2); var _local3:HideTipsPanel = new HideTipsPanel(); addChild(_local3); m_turtorialFrame.setCheckBox(_local3); m_turtorialFrame.addEventListener(MouseEvent.CLICK, onTurtotialFrameClick); m_turtorialFrame.getTextClip().addEventListener(MouseEvent.CLICK, onTurtotialFrameClick); m_turtorialFrame.getClickSign().addEventListener(MouseEvent.CLICK, onTurtotialFrameClick); this.addChild(m_turtorialFrame.getTextClip()); } private function hideHighlight():void{ if (m_turtorialFrame){ m_turtorialFrame.hide(); }; } 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 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); } public function onManCry():void{ if (m_nextState == null){ m_wasStar = false; }; } 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)) || ((GameData.getDifficulty() == GameData.EASY_MODE)))){ 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); } public function goNormalState():void{ setState(STATE_NORMAL); m_sightClip.x = m_bow.x; m_sightClip.y = m_bow.y; } 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(); }; } 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 addScores(_arg1:int):void{ m_currentScores = (m_currentScores + _arg1); } 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 lose():void{ if (m_nextState == null){ GameData.onLoseLevel(m_curLevel, m_killedCount); m_nextState = new LoseState(); m_nextStateTimer.start(); }; } 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(); }; } private function onNextStateTimer(_arg1:TimerEvent):void{ m_tmpScores = m_currentScores; recalcGui(); StateManager.getInstance().pushState(m_nextState); m_moreGamesPanel.hideWalkthroughSigh(); if ((m_nextState is WinState)){ GameData.onWinLevel(m_curLevel, m_currentScores, m_wasStar, m_savedCount); }; } 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(); } 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; } 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 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 ((((GameData.m_invertedControl == true)) && ((m_curLevel == 1)))){ m_turtorialFrames.length = 0; return; }; if (m_turtorialFrames.length != 0){ highlightZone(m_turtorialFrames.pop()); }; }; } 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, MathUtils.RandomRange(-6, 6)); if (_arg6 != ""){ _local8.setComixCloud(new ((getDefinitionByName(_arg6) as Class)), _arg7); } else { _local8.setComixCloud(new ((getDefinitionByName(("PhraseCloud" + MathUtils.RandomRangeInt(0, 11))) 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 onHangerDead(_arg1:Gibbet):void{ m_deadID = _arg1.getPersID(); m_killedCount++; recalcGui(); var _local2:b2Vec2 = _arg1.getHeadPosition(); var _local3:Soul = new ((getDefinitionByName(("Soul" + _arg1.getPersID())) as Class)); addChild(_local3); _local3.x = ((_local2.x * m_physScale) + m_layersContainer.x); _local3.y = ((_local2.y * m_physScale) + m_layersContainer.y); m_mapObjects.push(_local3); lose(); m_camera.onHangerDead(); } public function 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); switch (GameData.getDifficulty()){ case GameData.EASY_MODE: _local4 = (_local4 / 2); break; case GameData.NORMAL_MODE: break; case GameData.HARD_MODE: _local4 = (_local4 * 2); break; }; 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 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 testEndLevel():void{ if (m_gibbetsOnLevel == 0){ win(); return; }; } 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 createCloud(_arg1:DisplayObject):void{ m_cloudsLayer.addChild(_arg1); m_mapObjects.push((_arg1 as Cloud)); } 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); } 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); } 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 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); }; } 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 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); } private function createHedgehogGhost(_arg1:DisplayObject, _arg2:int, _arg3:Number):b2Body{ var _local6:Number; var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_staticBody; var _local5:b2Body = m_world.CreateBody(_local4); switch (_arg2){ case 1: _local6 = 18; break; case 3: _local6 = 19; break; case 4: _local6 = 19; break; }; var _local7:b2CircleShape = new b2CircleShape((_local6 / m_physScale)); var _local8:b2FixtureDef = new b2FixtureDef(); _local8.shape = _local7; _local8.isSensor = true; _local5.CreateFixture(_local8); _local5.SetUserData(_arg1); _local5.SetPositionAndAngle(new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)), 0); var _local9:HedgehogGhost = (_arg1 as HedgehogGhost); _local9.setRotationSpeed(_arg3); _local9.setCharge(_arg2); _local9.initRotation(); _local9.connectWithBody(_local5); m_mapObjects.push(_local9); m_dynamicLayer.addChild(_local9); return (_local5); } public function setLongShootMode():void{ m_camera = new TargetedCamera(); } 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 135
//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; 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); }; } 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); } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } } }//package States.PlayState
Section 136
//Soul (States.PlayState.Soul) package States.PlayState { import flash.display.*; 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)); }; } override public function onStop():void{ if (getChildByName("m_wings")){ (getChildByName("m_wings") as MovieClip).stop(); }; } override public function onResume():void{ if (getChildByName("m_wings")){ (getChildByName("m_wings") as MovieClip).play(); }; } } }//package States.PlayState
Section 137
//StaticBoxIsNotStone (States.PlayState.StaticBoxIsNotStone) package States.PlayState { import flash.display.*; public class StaticBoxIsNotStone extends MovieClip { } }//package States.PlayState
Section 138
//StaticBoxIsStone (States.PlayState.StaticBoxIsStone) package States.PlayState { import flash.display.*; public class StaticBoxIsStone extends MovieClip { } }//package States.PlayState
Section 139
//Sun (States.PlayState.Sun) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class Sun extends MapObject { public var m_face:MovieClip; public var m_sunCircle:MovieClip; public function Sun(){ m_face.stop(); } 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 onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_face.currentFrame == 1){ SoundManager.play(SoundConst.SUN_VOICE); m_face.play(); }; } override public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ onArrowContact(_arg1, _arg2); } } }//package States.PlayState
Section 140
//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_floor:Number = 0; private const m_maxCameraSpeed:Number = 900; private const m_scrollbackMaxTime:Number = 1; private var m_state:String;// = "AIMING_STATE" private var m_liveTime:Number;// = 0 private var m_curPos:Vector3; private var m_targetPos:Vector3; private var m_cameraAcceleration:Vector3; private var m_cameraSpeed:Vector3; private var m_bow:MovieClip; private var m_arrow:Arrow; private var m_scrollBackStartPos:Vector3; private var m_stateTime:Number; private var m_gibbetHead:MovieClip; private var m_gibbetHeadX:Number; private var m_guiArrow:DisplayObject; private var m_gibbets:Array; private var m_leftEdgeClip:DisplayObject; private var m_rightEdgeClip:DisplayObject; public static const AIMING_STATE:String = "AIMING_STATE"; public static const ARROW_FLY_STATE:String = "ARROW_FLY_STATE"; public static const SCROLL_BACK:String = "SCROLL_BACK"; public static const WAIT_BEFORE_BACK_STATE:String = "WAIT_BEFORE_BACK_STATE"; public static const COMPLETE_STATE:String = "COMPLETE_STATE"; public static const SHOW_GIBBET:String = "SHOW_GIBBET"; public function TargetedCamera(){ m_guiArrow = new LongShootArrow(); m_gibbets = new Array(); super(); } override public function setGibbet(_arg1:Gibbet):void{ m_gibbets.push(_arg1); m_gibbetHead = _arg1.getRagdoll().getBodyByName(HumanRagdoll.HEAD).GetUserData(); m_gibbetHeadX = m_gibbetHead.x; setState(SHOW_GIBBET); } public function setBow(_arg1:MovieClip):void{ m_bow = _arg1; } override public function setGUILayer(_arg1:Sprite):void{ super.setGUILayer(_arg1); m_guiLayer.addChild(m_guiArrow); m_guiArrow.visible = false; } override public function canShoot():Boolean{ return ((m_state == AIMING_STATE)); } 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 onShoot(_arg1:Arrow):void{ m_arrow = _arg1; setState(ARROW_FLY_STATE); } override public function onKillArrow():void{ if (m_state == ARROW_FLY_STATE){ setState(WAIT_BEFORE_BACK_STATE); }; } override public function onHangerSave():void{ setState(COMPLETE_STATE); } override public function onHangerDead():void{ setState(COMPLETE_STATE); } 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); } override public function update(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Gibbet; 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.3){ if (m_gibbets.length != 0){ _local5 = m_gibbets.pop(); m_gibbetHead = _local5.getRagdoll().getBodyByName(HumanRagdoll.HEAD).GetUserData(); m_gibbetHeadX = m_gibbetHead.x; setState(SHOW_GIBBET); } else { 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(); }; } 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; }; }; } } }//package States.PlayState
Section 141
//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 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; }; }; }; } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActive){ m_body = body; m_isActive = false; m_needRun = true; _arg1.kill(); }; } } }//package States.PlayState
Section 142
//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 onStop():void{ if (!m_isActivated){ stop(); }; } override public function onResume():void{ if (!m_isActivated){ play(); }; } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActivated){ m_isActivated = false; PlayState.getInstance().boomAt(m_body); play(); }; } 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 onDead(_arg1:b2World):void{ parent.removeChild(this); } } }//package States.PlayState
Section 143
//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_startScale:Number;// = 9 private var m_liveTime:Number;// = 0 private var m_finished:Boolean;// = false private var m_isShow:Boolean;// = true private var m_clickSign:MovieClip; private var m_textClip:DisplayObject; private var m_checkBox:HideTipsPanel; private var m_needToHide:Boolean;// = false 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 setCheckBox(_arg1:HideTipsPanel):void{ m_checkBox = _arg1; m_checkBox.alpha = 0; _arg1.m_checkBox.addEventListener(CheckBox.EVENT_CHANGE, onCheckBoxChange); } private function onCheckBoxChange(_arg1:Event):void{ var _local2:CheckBox = (_arg1.target as CheckBox); SoundManager.play(SoundConst.CLICK); m_needToHide = _local2.isChecked(); } public function isNeedToHide():Boolean{ return (m_needToHide); } public function getTextClip():DisplayObject{ return (m_textClip); } public function getClickSign():MovieClip{ return (m_clickSign); } public function setClickSign(_arg1:MovieClip):void{ m_clickSign = _arg1; m_clickSign.scaleX = 0; m_clickSign.scaleY = 0; } public function getCheckBox():HideTipsPanel{ return (m_checkBox); } public function hide():void{ m_liveTime = 0; m_isShow = false; m_finished = false; } public function isFinished():Boolean{ return (m_finished); } 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); }; }; }; } } }//package States.PlayState
Section 144
//UndeadSoul (States.PlayState.UndeadSoul) package States.PlayState { import Utils.*; public class UndeadSoul extends Soul { var speed:Number; public function UndeadSoul(){ speed = MathUtils.RandomRange(55, 95); super(); } override public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); y = (y - (speed * _arg1)); if (y < -300){ y = (Constant.WINDOW_HEIGHT + 300); }; } } }//package States.PlayState
Section 145
//Vulture (States.PlayState.Vulture) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class Vulture extends MapObject { private var m_legsFixture:b2Fixture;// = null private var m_torsoFixture:b2Fixture;// = null private var m_headFixture:b2Fixture;// = null private var m_anim:MovieClip; private var m_isLeft:Boolean;// = false 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 update(_arg1:Number):void{ if ((((m_anim.clip.currentFrame == m_anim.clip.totalFrames)) && (!(m_isDead)))){ m_anim.clip.gotoAndStop(1); }; } override public function onStop():void{ m_anim.clip.stop(); } override public function onResume():void{ if (m_anim.clip.currentFrame != 1){ m_anim.clip.play(); }; } 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(); }; } override public function isItYourFixture(_arg1:b2Fixture):Boolean{ return ((((((_arg1 == m_legsFixture)) || ((_arg1 == m_torsoFixture)))) || ((_arg1 == m_headFixture)))); } } }//package States.PlayState
Section 146
//AchievementsState (States.AchievementsState) package States { import flash.events.*; import Main.*; import flash.utils.*; public class AchievementsState extends GameState { private static const TITLE_COLOR:String = "#55FF55"; private static const REQUIREMENTS_COLOR:String = "#FFCC00"; private static const BONUS_COLOR:String = "#FFCC00"; 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()); var _local1:Dictionary = new Dictionary(); _local1[Achievements.CROWN] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>CROWN</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> get all achievements.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +30 000 points."); _local1[Achievements.HALF_COMPLETED] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER GIBBET</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> Pass 24 levels.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +5 000 points."); _local1[Achievements.FULL_COMPLETED] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN GIBBET</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> Pass all levels.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +5 secret space levels."); _local1[Achievements.WITH_STAR_40] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>STAR</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> Pass 40 levels with a star rating.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +1 arrow at each level."); _local1[Achievements.ACCURACY_70] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>SNIPER CUP</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass minigame with 70% accuracy.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +10 additional arrows in minigame"); _local1[Achievements.SAVES_50] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER STATUETTE OF THE SAVER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> save 50 hangmans.<br>"); _local1[Achievements.SAVES_100] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN STATUETTE OF THE SAVER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> save 100 hangmans.<br>"); _local1[Achievements.GRIFS_KILLED] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>STATUETTE OF THE VULTURE HUNTER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> kill 100 of vultures in minigames.") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +50 score for each killed vulture."); _local1[Achievements.HOUR_PLAYED] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER CUP OF GIBBETS MASTER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> play for 1 hour on end.<br>"); _local1[Achievements.TWO_HOURS_PLAYED] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN CUP OF GIBBETS MASTER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> play for 2 hour on end.<br>"); _local1[Achievements.LEVEL_24_IN_5_SHOT] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER BOW OF SNIPER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass 43th level with only 5 arrows shot.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> hangmans suffocate for 10% slower."); _local1[Achievements.LEVEL_44_IN_7_SHOT] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN BOW OF SNIPER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass 46th 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); } override public function onCleanup():void{ m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); super.onCleanup(); } private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } } }//package States
Section 147
//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_mapObjects:Array; private var m_timer:Timer; private var m_progGibbet:Gibbet; private var m_progClouds:Array; private var m_iter:int;// = 0 public function CreditsState(){ m_mapObjects = new Array(); m_timer = new Timer(4500); m_progClouds = [new ProgrammingCloud()]; super(); } private function onBlogClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); navigateToURL(new URLRequest("http://smrdis.ya.ru"), "_blank"); } private function onMailClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); navigateToURL(new URLRequest("mailto:gibbetsfeedback@gmail.com"), "_blank"); } 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, -4); 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, 5); _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, 3); _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()); m_timer.addEventListener(TimerEvent.TIMER, onTick); m_timer.start(); } private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } private function onNotdopplerClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.CREDITS_SCREEN_NOTDOPPLER_BUTTON); } 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(); } override public function update(_arg1:Number):void{ var _local2:MapObject; super.update(_arg1); for each (_local2 in m_mapObjects) { _local2.update(_arg1); }; } 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 148
//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 SWFStats.*; import CPMStar.*; import flash.text.*; import flash.net.*; import flash.system.*; public class CurrentPreloaderState extends PreloaderState { private var m_mapObjects:Array; public var m_scrollBar:ScrollBar; public var m_loadingLabel:TextField; public var m_loadingBar:MovieClip; public var m_playButton:SimpleButton; public var m_notdoppler:SimpleButton; public var m_adBox:MovieClip; public var m_closeButton:SimpleButton; public var m_gibbetFront:MovieClip; public var m_buttonGibbets1:SimpleButton; public var m_buttonGibbets2:SimpleButton; private var m_accumulateTime:Number;// = 0 private var m_noMochiBot:Boolean;// = true private var m_gibbetPlace:MovieClip; private var m_needShowPlay:Boolean;// = false protected var m_world:b2World; protected var m_physScale:Number;// = 30 protected var m_gravity:b2Vec2; private var m_mouseJoint:b2MouseJoint; protected var m_mouseDragEnabled:Boolean;// = true public function CurrentPreloaderState(){ m_mapObjects = new Array(); m_gibbetPlace = new MovieClip(); m_gravity = new b2Vec2(0, 10); super(); m_playButton.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(5.5); } 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; }; }; if ((((m_liveTime > 1)) && (m_noMochiBot))){ MochiBot.track(this, "1ddcaafb"); m_noMochiBot = false; }; } 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))))) || (!((m_loaderInfo.url.indexOf("maxgames.com") == -1))))) || (!((m_loaderInfo.url.indexOf("mofunzone.com") == -1))))) || (!((m_loaderInfo.url.indexOf("gamezhero.com") == -1))))) || (!((m_loaderInfo.url.indexOf("freeonlinegames.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, 1, false, -6); _local2.makeLookUgly(); m_gibbetPlace.addChild(_local2); _local2.getRagdoll().applyImpulse(new b2Vec2(-0.1, 0)); m_mapObjects.push(_local2); addChild(m_gibbetFront); addChild(m_buttonGibbets1); addChild(m_buttonGibbets2); if (GameData.haveAds()){ showAds(); } else { onCloseClick(null); }; m_playButton.x = (m_playButton.x + 200); m_notdoppler.addEventListener(MouseEvent.CLICK, onNotDopplerClick); m_buttonGibbets1.addEventListener(MouseEvent.CLICK, onGibbet1Click); m_buttonGibbets2.addEventListener(MouseEvent.CLICK, onGibbet2Click); if (GameData.hasKongregateAPI()){ initKongregateAPI(); }; Log.View(0x0404, "65ffc0918b11", m_loaderInfo.url); update(0); } private function onNotDopplerClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.PRELOADER_SCREEN_BANNER); } private function onGibbet1Click(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.GIBBETS_I_URL, LinksManager.PRELOADER_GIBBETS_1); } private function onGibbet2Click(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.GIBBETS_II_URL, LinksManager.PRELOADER_GIBBETS_2); } private function onCloseClick(_arg1:MouseEvent):void{ m_adBox.visible = false; m_closeButton.visible = false; } override public function onCleanup():void{ m_notdoppler.removeEventListener(MouseEvent.CLICK, onNotDopplerClick); m_playButton.removeEventListener(MouseEvent.CLICK, onPlayClick); m_buttonGibbets1.removeEventListener(MouseEvent.CLICK, onGibbet1Click); m_buttonGibbets2.removeEventListener(MouseEvent.CLICK, onGibbet2Click); super.onCleanup(); } override public function onFinishLoading():void{ m_needShowPlay = true; GameData.load(); m_playButton.visible = true; } private function onPlayClick(_arg1:MouseEvent):void{ StateManager.getInstance().gotoAndStop(2); GameData.init(); SoundManager.play(SoundConst.CLICK); StateManager.getInstance().changeState(new SponsorIntroState()); } public function getMousePhysPos():b2Vec2{ return (new b2Vec2(((stage.mouseX / m_physScale) / m_gibbetPlace.scaleX), ((stage.mouseY / m_physScale) / m_gibbetPlace.scaleY))); } 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 handleMouseMove(_arg1:MouseEvent):void{ if (m_mouseDragEnabled){ if (m_mouseJoint){ m_mouseJoint.SetTarget(getMousePhysPos()); }; }; } 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); }; }; }; } 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 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()); }; } 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()); }; } } }//package States
Section 149
//GameCompleteState (States.GameCompleteState) package States { import flash.events.*; import Box2D.Common.Math.*; import Utils.*; import Main.*; import flash.display.*; import States.PlayState.*; import Ragdoll.*; import flash.utils.*; public class GameCompleteState extends PhysGameState { private var m_mapObjects:Array; public function GameCompleteState(){ m_mapObjects = new Array(); super(); } override public function onInit():void{ var _local4:MovieClip; var _local7:DisplayObject; var _local8:UndeadSoul; super.onInit(); m_view = new GameCompleteStateView(); addChild(m_view); var _local1:int; while (_local1 < m_view.numChildren) { _local7 = m_view.getChildAt(_local1); if ((_local7 is Cloud)){ m_mapObjects.push((_local7 as Cloud)); }; _local1++; }; var _local2 = 5; var _local3:int; while (_local3 < _local2) { _local8 = new UndeadSoul(); _local8.x = (((Constant.WINDOW_WIDTH / _local2) * _local3) + MathUtils.RandomRange(-10, 10)); _local8.y = MathUtils.RandomRange((Constant.WINDOW_HEIGHT + 50), ((Constant.WINDOW_HEIGHT * 2) + 50)); _local8.addChild(new ((getDefinitionByName(("Soul" + MathUtils.RandomRangeInt(1, 4))) as Class))); m_mapObjects.push(_local8); m_view.addChildAt(_local8, 1); _local3++; }; _local4 = new MovieClip(); _local4.scaleX = 1.6; _local4.scaleY = 1.6; var _local5:Gibbet = new Gibbet(new b2Vec2(((345 / m_physScale) / _local4.scaleX), ((105 / m_physScale) / _local4.scaleY)), HumanRagdoll.HEAD, 6, m_world, 1, false, -6); _local5.makeLookUgly(); var _local6:GameCompleteCloud = new GameCompleteCloud(); _local5.setComixCloud(_local6); _local5.showCloudNow(); _local4.addChild(_local5); _local4.addChild(_local6); _local5.getRagdoll().applyImpulse(new b2Vec2(-0.05, 0)); m_mapObjects.push(_local5); m_view.addChild(m_view.m_gibbetFront); m_view.addChild(_local4); 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_buttonGibbets1.addEventListener(MouseEvent.CLICK, onGibbet1Click); m_view.m_buttonGibbets2.addEventListener(MouseEvent.CLICK, onGibbet2Click); m_view.addChild(m_view.m_buttonGibbets1); m_view.addChild(m_view.m_buttonGibbets2); 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()); 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 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); m_view.m_buttonGibbets1.removeEventListener(MouseEvent.CLICK, onGibbet1Click); m_view.m_buttonGibbets2.removeEventListener(MouseEvent.CLICK, onGibbet2Click); 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 onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } private function onNotDopplerClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.GAME_COMPLETE_NOTDOPPLER_BUTTON); } private function onMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.GAME_COMPLETE_MORE_GAMES_BUTTON); } private function onGibbet1Click(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.GIBBETS_I_URL, LinksManager.GAME_COMPLETE_GIBBETS_1); } private function onGibbet2Click(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.GIBBETS_II_URL, LinksManager.GAME_COMPLETE_GIBBETS_2); } } }//package States
Section 150
//GamePausedState (States.GamePausedState) package States { import flash.events.*; import Main.*; public class GamePausedState extends GameState { override public function onInit():void{ m_view = new GamePausedStateView(); addChild(m_view); m_view.buttonMode = true; } override public function handleMouseDown(_arg1:MouseEvent):void{ StateManager.getInstance().popState(); } 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); } } }//package States
Section 151
//GrifShootingWinState (States.GrifShootingWinState) package States { import flash.events.*; import Main.*; import flash.geom.*; import States.GrifShooting.*; public class GrifShootingWinState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_UP:int = 1; private const STATE_MOVE_END:int = 2; private const m_startPosition:Point; private const m_endPosition:Point; private const m_cupStartPosition:Point; private const m_cupEndPosition:Point; private var m_state:int;// = 0 private var m_shader:Shader; private var m_wasStarSound:Boolean;// = false private var m_wasNewAchievement:Boolean;// = false 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 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(false, true)); } private function onButtonMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.WIN_SCREEN_MORE_GAMES_BUTTON); } private function onButtonMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } private function onButtonNextClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState((GrifShootingState.m_curLevel + 1))); } private function onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } 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(); } 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; }; }; }; } } }//package States
Section 152
//LeftToRightMoveTransactionState (States.LeftToRightMoveTransactionState) package States { import Main.*; import flash.display.*; public class LeftToRightMoveTransactionState extends GameState { 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_type:String;// = null private var m_maxTransitionTime:Number;// = 0.5 public static const LEFT_TO_RIGHT_TRANSACTION:String = "leftToRight"; 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 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 onInit():void{ addChild(m_stateView1); addChild(m_stateView2); update(0); } 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 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(); } } }//package States
Section 153
//LoseState (States.LoseState) package States { import flash.events.*; import Box2D.Common.Math.*; import Utils.*; import Main.*; import flash.display.*; import States.PlayState.*; import Ragdoll.*; import SWFStats.*; 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_state:int;// = 0 private var m_shader:Shader; public function LoseState(){ m_shader = new Shader(0.7, 1.4, 0, 0.5); super(); } override public function onInit():void{ var _local4:Hint; 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); m_view.m_buttonSkip.addEventListener(MouseEvent.CLICK, onSkipClick); m_view.m_buttonChangeDifficulty.addEventListener(MouseEvent.CLICK, onChangeDifficultyClick); if (GameData.canSkipLevel(PlayState.m_curLevel)){ m_view.m_buttonSkip.visible = true; m_view.m_buttonUnenabled.visible = false; } else { m_view.m_buttonSkip.visible = false; m_view.m_buttonSkip.enabled = false; m_view.m_buttonUnenabled.visible = true; _local4 = new Hint(); _local4.setText("You can skip only two levels."); m_view.m_buttonUnenabled.setHint(_local4); m_view.addChild(_local4); }; 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, MathUtils.RandomRange(-6, 6)); _local1.addChild(_local3); _local3.getRagdoll().applyImpulse(new b2Vec2(MathUtils.RandomRange(0.1, 0.2), 0)); _local3.makeLookUgly(); SoundManager.playFadeOut(SoundConst.LOSE); addChild(new MoreGamesPanel(false, true)); } private function onSkipClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState((PlayState.m_curLevel + 1))); Log.LevelCounterMetric("skip level", PlayState.m_curLevel); } private function onButtonMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.LOSE_SCREEN_MORE_GAMES_BUTTON); } private function onButtonMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } private function onButtonRestartClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState(PlayState.m_curLevel)); } private function onChangeDifficultyClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SelectDifficultyState()); } 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_view.m_buttonSkip.removeEventListener(MouseEvent.CLICK, onSkipClick); m_view.m_buttonChangeDifficulty.removeEventListener(MouseEvent.CLICK, onChangeDifficultyClick); 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; }; } } }//package States
Section 154
//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_mapObjects:Array; private var m_count:int;// = 1 private var m_phylosophyCloud:MovieClip;// = null private var m_cheat:Array; public function MainMenuState(){ m_mapObjects = new Array(); m_cheat = new Array(); super(); } override public function onResume():void{ if ((StateManager.getInstance().getLastState() is SelectDifficultyState)){ StateManager.getInstance().coolChangeState(GameData.getNextState(0)); }; } 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); if (GameData.levelsAviable != 3){ StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } else { if (GameData.getDifficulty() == GameData.NOT_SELECTED_MODE){ StateManager.getInstance().pushState(new SelectDifficultyState()); } else { StateManager.getInstance().coolChangeState(GameData.getNextState(0)); }; }; } 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, LinksManager.MAIN_MENU_HIGH_SCORE_BUTTON); } 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_1_BUTTON); } else { if (left_anim.getChildByName("m_buttonGibbetsII").hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.GIBBETS_II_URL, LinksManager.MAIN_MENU_GIBBETS_2_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.MOO); 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); }; }; }; } override public function onCleanup():void{ m_mapObjects = null; m_cheat = null; super.onCleanup(); } } }//package States
Section 155
//OptionsState (States.OptionsState) package States { import flash.events.*; import Main.*; import flash.geom.*; public class OptionsState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_UP:int = 1; private const STATE_MOVE_END:int = 2; private const STATE_MOVE_BACK:int = 3; private const m_startPosition:Point; private const m_endPosition:Point; private var m_state:int;// = 0 private var m_shader:Shader; 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(); } 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(); } 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; }; } private function onMusicVolumeChange(_arg1:Event):void{ SoundManager.setMusicVolume(m_view.m_musicVolume.getProgress()); } private function onSoundVolumeChange(_arg1:Event):void{ SoundManager.play(SoundConst.CLICK); SoundManager.setSoundVolume(m_view.m_soundVolume.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 onDisableBloodChange(_arg1:Event):void{ var _local2:CheckBox = (_arg1.target as CheckBox); GameData.m_isBloodDisabled = _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()); } 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(); } } }//package States
Section 156
//ParserConst (States.ParserConst) package States { public class ParserConst { public static const ATTRIBUTE_TYPE:String = "type"; public static const TYPE_STATIC_BOX:String = "static_box"; public static const TYPE_DYNAMIC_BOX:String = "dynamic_box"; public static const TYPE_VULTURE:String = "vulture"; public static const TYPE_TNT_BARREL:String = "tnt_barrel"; public static const TYPE_CLOUD:String = "cloud"; public static const TYPE_GIBBET_GROUND:String = "gibbet_ground"; public static const TYPE_GIBBET:String = "gibbet"; public static const TYPE_SHOOTING_POINT:String = "shooting_point"; public static const TYPE_ARROW_GHOST:String = "arrow_ghost"; public static const TYPE_AMMO_GHOST:String = "ammo_ghost"; public static const TYPE_POINTS_GHOST:String = "points_ghost"; public static const TYPE_TELEPORT_GHOST:String = "teleport_ghost"; public static const TYPE_HEDHEHOG_GHOST:String = "hedhehog_ghost"; public static const TYPE_SUN:String = "sun"; public static const TYPE_BACKGROUND:String = "background"; public static const TYPE_ROTOR:String = "rotor"; public static const TYPE_HIGHLIGHT:String = "highlight"; public static const TYPE_FRONTGROUND:String = "frontground"; public static const TYPE_GROUND:String = "ground"; public static const TYPE_GIBBET_OBLIQUELY:String = "gibbet_obliquely"; public static const TYPE_COW:String = "cow"; public static const TYPE_EDGE_MARKER:String = "edge_marker"; } }//package States
Section 157
//SelectDifficultyState (States.SelectDifficultyState) package States { import flash.events.*; import Main.*; import flash.geom.*; import SWFStats.*; public class SelectDifficultyState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_UP:int = 1; private const STATE_MOVE_END:int = 2; private const STATE_MOVE_BACK:int = 3; private const m_startPosition:Point; private const m_endPosition:Point; private var m_state:int;// = 0 private var m_shader:Shader; public function SelectDifficultyState(){ m_shader = new Shader(0.6, 1.2, 0, 0.5); m_startPosition = new Point(584, -215); m_endPosition = new Point(493, 62); super(); } override public function onInit():void{ super.onInit(); m_view = new SelectDifficultyStateView(); addChild(m_shader); addChild(m_view); m_view.y = -480; m_view.m_checkBoxEasy.addEventListener(MouseEvent.CLICK, onEasyClick); m_view.m_checkBoxNormal.addEventListener(MouseEvent.CLICK, onNormalClick); m_view.m_checkBoxHard.addEventListener(MouseEvent.CLICK, onHardClick); m_view.m_buttonOk.addEventListener(MouseEvent.CLICK, onOkClick); switch (GameData.getDifficulty()){ case GameData.EASY_MODE: onEasyClick(null); break; case GameData.NOT_SELECTED_MODE: case GameData.NORMAL_MODE: onNormalClick(null); break; case GameData.HARD_MODE: onHardClick(null); break; }; } override public function onCleanup():void{ m_view.m_checkBoxEasy.removeEventListener(MouseEvent.CLICK, onEasyClick); m_view.m_checkBoxNormal.removeEventListener(MouseEvent.CLICK, onNormalClick); m_view.m_checkBoxHard.removeEventListener(MouseEvent.CLICK, onHardClick); m_view.m_buttonOk.removeEventListener(MouseEvent.CLICK, onOkClick); super.onCleanup(); } private function onEasyClick(_arg1:MouseEvent):void{ GameData.setDifficulty(GameData.EASY_MODE); SoundManager.play(SoundConst.CLICK); m_view.m_checkBoxEasy.setChecked(true); m_view.m_checkBoxNormal.setChecked(false); m_view.m_checkBoxHard.setChecked(false); m_view.m_easyText.visible = true; m_view.m_normalText.visible = false; m_view.m_hardText.visible = false; if (_arg1 != null){ Log.CustomMetric("easy mode selected"); }; } private function onNormalClick(_arg1:MouseEvent):void{ GameData.setDifficulty(GameData.NORMAL_MODE); SoundManager.play(SoundConst.CLICK); m_view.m_checkBoxEasy.setChecked(false); m_view.m_checkBoxNormal.setChecked(true); m_view.m_checkBoxHard.setChecked(false); m_view.m_easyText.visible = false; m_view.m_normalText.visible = true; m_view.m_hardText.visible = false; if (_arg1 != null){ Log.CustomMetric("normal mode selected"); }; } private function onHardClick(_arg1:MouseEvent):void{ GameData.setDifficulty(GameData.HARD_MODE); SoundManager.play(SoundConst.CLICK); m_view.m_checkBoxEasy.setChecked(false); m_view.m_checkBoxNormal.setChecked(false); m_view.m_checkBoxHard.setChecked(true); m_view.m_easyText.visible = false; m_view.m_normalText.visible = false; m_view.m_hardText.visible = true; if (_arg1 != null){ Log.CustomMetric("hard mode selected"); }; } private function onOkClick(_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.save(); } 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; }; } } }//package States
Section 158
//SelectLevelButton (States.SelectLevelButton) package States { import flash.events.*; import flash.display.*; import flash.text.*; public class SelectLevelButton extends MovieClip { private var m_state:String;// = "up" private var m_isShowStar:Boolean;// = false private var m_isCompleted:Boolean;// = false private var m_textUp:TextField; private var m_up:MovieClip; private var m_starUp:MovieClip; private var m_signUp:MovieClip; private var m_textOver:TextField; private var m_over:MovieClip; private var m_starOver:MovieClip; private var m_signOver:MovieClip; private var m_textDown:TextField; private var m_down:MovieClip; private var m_starDown:MovieClip; private var m_signDown:MovieClip; private var m_unenable:MovieClip; public static const UP:String = "up"; public static const OVER:String = "over"; public static const DOWN:String = "down"; 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_signDown = (getChildByName("m_signDown") as MovieClip); m_signUp = (getChildByName("m_signUp") as MovieClip); m_signOver = (getChildByName("m_signOver") 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 hide():void{ m_textUp.visible = false; m_up.visible = false; m_starUp.visible = false; m_signUp.visible = false; m_textOver.visible = false; m_over.visible = false; m_starOver.visible = false; m_signOver.visible = false; m_textDown.visible = false; m_down.visible = false; m_starDown.visible = false; m_signDown.visible = false; m_unenable.visible = false; } public function setText(_arg1:String):void{ m_textUp.text = _arg1; m_textOver.text = _arg1; m_textDown.text = _arg1; setState(UP); } public function setCompleted():void{ m_isCompleted = true; setState(m_state); } public function setNotCompleted():void{ m_isCompleted = false; setState(m_state); } public function showStar():void{ m_isShowStar = true; setState(m_state); } public function hideStar():void{ m_isShowStar = false; setState(m_state); } 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_signDown = null; m_signUp = null; m_signOver = null; m_unenable = null; } private function handleMouseOver(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(OVER); }; } private function handleMouseOut(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(UP); }; } private function handleMouseDown(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(DOWN); }; } private function handleMouseUp(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(OVER); }; } public function unenable():void{ setState(UNENABLE); } 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_isCompleted){ m_signUp.visible = true; }; if (m_isShowStar){ m_starUp.visible = true; }; break; case DOWN: m_down.visible = true; m_textDown.visible = true; if (m_isCompleted){ m_signDown.visible = true; }; if (m_isShowStar){ m_starDown.visible = true; }; break; case OVER: m_over.visible = true; m_textOver.visible = true; if (m_isCompleted){ m_signOver.visible = true; }; if (m_isShowStar){ m_starOver.visible = true; }; break; }; m_state = _arg1; } } }//package States
Section 159
//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 onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } 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 onArrowRightClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); m_isSecondPart = !(m_isSecondPart); prepareLevelsList(m_view.m_buttonsPanel, m_view); if (m_isSecondPart){ GameData.onEnterSelectLevelScreen(GameData.SCREEN_25_48); } else { GameData.onEnterSelectLevelScreen(GameData.SCREEN_1_24); }; } 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()); return (_local1); } 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); m_view.m_difficultyCaption.addEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); m_view.m_difficulty.addEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); if (GameData.levelsAviable > 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()); 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 onChangeDiffictultyClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SelectDifficultyState()); } private function onSubmitClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SubmitScoreState()); } private function prepareLevelsList(_arg1:MovieClip, _arg2):void{ var _local4:SelectLevelButton; var _local5:int; var _local3:int; while (_local3 < 24) { _local4 = (_arg1.getChildByName(("m_level" + _local3)) as SelectLevelButton); _local5 = _local3; if (m_isSecondPart){ _local5 = (_local5 + 24); }; if (_local5 < GameData.levelsAviable){ _local4.setText((_local5 + 1).toString()); } else { _local4.unenable(); }; if (GameData.isLevelWithStar(_local5)){ _local4.showStar(); } else { _local4.hideStar(); }; if (GameData.isLevelCompleted(_local5)){ _local4.setCompleted(); } else { _local4.setNotCompleted(); }; _local3++; }; if (m_isSecondPart){ _arg2.m_page.text = "page 2/2"; } else { _arg2.m_page.text = "page 1/2"; }; switch (GameData.getDifficulty()){ case GameData.EASY_MODE: _arg2.m_difficulty.text = "easy"; break; case GameData.NORMAL_MODE: _arg2.m_difficulty.text = "normal"; break; case GameData.HARD_MODE: _arg2.m_difficulty.text = "hard"; break; }; } override public function onResume():void{ super.onResume(); switch (GameData.getDifficulty()){ case GameData.EASY_MODE: m_view.m_difficulty.text = "easy"; break; case GameData.NORMAL_MODE: m_view.m_difficulty.text = "normal"; break; case GameData.HARD_MODE: m_view.m_difficulty.text = "hard"; break; }; } private function prepareView(_arg1:MovieClip):void{ _arg1.m_totalScore.m_text.text = GameData.totalScore.toString(); prepareLevelsList(_arg1.m_buttonsPanel, _arg1); } override public function handleMouseClick(_arg1:MouseEvent):void{ var _local4:int; var _local2:int = GameData.levelsAviable; 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 onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } 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_view.m_difficultyCaption.removeEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); m_view.m_difficulty.removeEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); m_mapObjects = null; super.onCleanup(); } override public function update(_arg1:Number):void{ var _local2:MapObject; for each (_local2 in m_mapObjects) { _local2.update(_arg1); }; } } }//package States
Section 160
//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(); } 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); m_view.m_difficultyCaption.addEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); m_view.m_difficulty.addEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); 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()); if (GameData.haveAds()){ showAds(); }; if (!GameData.canSubmitScore()){ m_view.m_buttonSubmit.visible = false; }; } private function onChangeDiffictultyClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SelectDifficultyState()); } 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 onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } private function onCloseClick(_arg1:MouseEvent):void{ m_view.m_adBox.visible = false; m_view.m_closeButton.visible = false; } private function prepareView(_arg1:MovieClip):void{ var _local4:SelectLevelButton; _arg1.m_totalScore.m_text.text = GameData.totalScore.toString(); var _local2:int = GameData.levelsAviable; var _local3 = 48; while (_local3 < (48 + 6)) { _local4 = _arg1[("m_level" + _local3)]; if (_local3 < _local2){ _local4.setText((_local3 + 1).toString()); if (GameData.isLevelWithStar(_local3)){ _local4.showStar(); }; } else { _local4.unenable(); }; if (GameData.isLevelCompleted(_local3)){ _local4.setCompleted(); } else { _local4.setNotCompleted(); }; _local3++; }; switch (GameData.getDifficulty()){ case GameData.EASY_MODE: _arg1.m_difficulty.text = "easy"; break; case GameData.NORMAL_MODE: _arg1.m_difficulty.text = "normal"; break; case GameData.HARD_MODE: _arg1.m_difficulty.text = "hard"; break; }; } 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()); if (!GameData.canSubmitScore()){ _local1.m_buttonSubmit.visible = false; }; return (_local1); } private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } 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)); } private function onSubmitClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SubmitScoreState()); } override public function onResume():void{ super.onResume(); switch (GameData.getDifficulty()){ case GameData.EASY_MODE: m_view.m_difficulty.text = "easy"; break; case GameData.NORMAL_MODE: m_view.m_difficulty.text = "normal"; break; case GameData.HARD_MODE: m_view.m_difficulty.text = "hard"; break; }; } 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_difficultyCaption.removeEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); m_view.m_difficulty.removeEventListener(MouseEvent.CLICK, onChangeDiffictultyClick); m_view.m_closeButton.removeEventListener(MouseEvent.CLICK, onCloseClick); m_mapObjects = null; super.onCleanup(); } catch(e:Error) { trace(e, e.getStackTrace()); }; } override public function handleMouseClick(_arg1:MouseEvent):void{ var _local4:int; var _local2:int = GameData.levelsAviable; var _local3:int; while (_local3 < 6) { _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++; }; } 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)); }; }; } } }//package States
Section 161
//ShadeInState (States.ShadeInState) package States { import Main.*; public class ShadeInState extends GameState { private var m_shader:InShader;// = null private var m_nextState:GameState;// = null public function setNextState(_arg1:GameState):void{ m_nextState = _arg1; } override public function onPreInit():void{ m_shader = new InShader(0.3, 1); addChild(m_shader); } override public function onInit():void{ m_shader.restart(); } 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()); }; }; } override public function onCleanup():void{ m_shader = null; m_nextState = null; super.onCleanup(); } } }//package States
Section 162
//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 onInit():void{ m_shader.restart(); } override public function update(_arg1:Number):void{ m_shader.update(_arg1); if (m_shader.isMaxTime()){ StateManager.getInstance().popState(); }; } override public function onCleanup():void{ m_shader = null; super.onCleanup(); } } }//package States
Section 163
//SponsorIntroState (States.SponsorIntroState) package States { import flash.events.*; import flash.media.*; import Main.*; import flash.display.*; public class SponsorIntroState extends GameState { private var m_introClip:MovieClip; private var m_sound:SoundChannel; private var m_introButton:SimpleButton; override public function onInit():void{ m_introClip = new SponsorIntro(); m_introButton = new IntroButton(); m_introButton.addEventListener(MouseEvent.CLICK, onIntroClick); addChild(m_introClip); addChild(m_introButton); m_sound = SoundManager.play("SponsorMusic"); } override public function onCleanup():void{ m_introButton.removeEventListener(MouseEvent.CLICK, onIntroClick); try { m_sound.stop(); } catch(e:Error) { trace(e, e.getStackTrace()); }; StateManager.getInstance().setOverlay(new SoundButton()); m_introClip = null; m_sound = null; m_introButton = null; super.onCleanup(); } private function onIntroClick(_arg1:MouseEvent):void{ LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.INTRO_SCREEN_BUTTON); } override public function update(_arg1:Number):void{ if (m_introClip.currentFrame == m_introClip.totalFrames){ StateManager.getInstance().changeState(new MainMenuState()); }; } } }//package States
Section 164
//SubmitScoreState (States.SubmitScoreState) package States { import flash.events.*; import Main.*; import flash.display.*; import SWFStats.*; public class SubmitScoreState extends GameState { private const SHOW:int = 0; private const HIDE:int = 4; private var m_shader:Shader; private var m_state:int; private var hs_game:String;// = "gibbets2lp" private var hs_score:Number; private var hs_view:Number;// = 2 private var hs_URL:String;// = "http://www.notdoppler.com/highscores.php?game=gibbets2lp" private var m_closeCross:SimpleButton; 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 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); Log.CustomMetric(LinksManager.SCORE_SUBMISSION, "sponsor link clicks"); Log.CustomMetric("overal sponsor link clicks"); } override public function onCleanup():void{ m_closeCross.removeEventListener(MouseEvent.CLICK, onCloseClick); removeChild(m_shader); } 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 165
//WinState (States.WinState) package States { import flash.events.*; import Main.*; import flash.geom.*; import States.PlayState.*; public class WinState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_UP:int = 1; private const STATE_MOVE_END:int = 2; private const m_startPosition:Point; private const m_endPosition:Point; private const m_cupStartPosition:Point; private const m_cupEndPosition:Point; private var m_state:int;// = 0 private var m_shader:Shader; private var m_wasStarSound:Boolean;// = false private var m_wasNewAchievement:Boolean;// = false 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 onInit():void{ if ((((PlayState.m_curLevel == (43 - 1))) && ((PlayState.m_arrowsUsed <= 5)))){ GameData.giveAchievement(Achievements.LEVEL_24_IN_5_SHOT); }; if ((((PlayState.m_curLevel == (46 - 1))) && ((PlayState.m_arrowsUsed <= 7)))){ GameData.giveAchievement(Achievements.LEVEL_44_IN_7_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(false, true)); } private function onButtonMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.WIN_SCREEN_MORE_GAMES_BUTTON); } private function onButtonMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } private function onButtonNextClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState((PlayState.m_curLevel + 1))); } private function onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } 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(); } 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; }; }; }; } } }//package States
Section 166
//YesNoState (States.YesNoState) package States { import flash.events.*; import Main.*; import flash.geom.*; public class YesNoState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_UP:int = 1; private const STATE_MOVE_END:int = 2; private const STATE_MOVE_BACK:int = 3; private const m_startPosition:Point; private const m_endPosition:Point; private var m_state:int;// = 0 private var m_shader:Shader; 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(); } 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); } 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(); } 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 onCleanup():void{ m_view.m_buttonYes.removeEventListener(MouseEvent.CLICK, onYesClick); m_view.m_buttonNo.removeEventListener(MouseEvent.CLICK, onNoClick); super.onCleanup(); } } }//package States
Section 167
//Log (SWFStats.Log) package SWFStats { import flash.events.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.external.*; public final class Log { private static const PingF:Timer = new Timer(60000); private static const PingR:Timer = new Timer(30000); public static var Enabled:Boolean = false; public static var Queue:Boolean = true; public static var SWFID:int = 0; public static var GUID:String = ""; public static var SourceUrl:String; private static var Request:LogRequest = new LogRequest(); private static var FirstPing:Boolean = true; private static var Pings:int = 0; private static var Plays:int = 0; private static var HighestGoal:int = 0; public static function View(_arg1:int=0, _arg2:String="", _arg3:String=""):void{ if (SWFID > 0){ return; }; SWFID = _arg1; GUID = _arg2; Enabled = true; if ((((SWFID == 0)) || ((GUID == "")))){ Enabled = false; return; }; if (((((!((_arg3.indexOf("http://") == 0))) && (!((Security.sandboxType == "localWithNetwork"))))) && (!((Security.sandboxType == "localTrusted"))))){ Enabled = false; return; }; SourceUrl = GetUrl(_arg3); if ((((SourceUrl == null)) || ((SourceUrl == "")))){ Enabled = false; return; }; Security.allowDomain("http://tracker.swfstats.com/"); Security.allowInsecureDomain("http://tracker.swfstats.com/"); Security.loadPolicyFile("http://tracker.swfstats.com/crossdomain.xml"); Security.allowDomain("http://utils.swfstats.com/"); Security.allowInsecureDomain("http://utils.swfstats.com/"); Security.loadPolicyFile("http://utils.swfstats.com/crossdomain.xml"); var _local4:int = GetCookie("views"); _local4++; SaveCookie("views", _local4); Send(("v/" + _local4), true); PingF.addEventListener(TimerEvent.TIMER, PingServer); PingF.start(); } public static function Play():void{ if (!Enabled){ return; }; Plays++; Send(("p/" + Plays)); } public static function Goal(_arg1:int, _arg2:String):void{ } private static function PingServer(... _args):void{ if (!Enabled){ return; }; Pings++; Send(((("t/" + (FirstPing) ? "y" : "n") + "/") + Pings), true); if (FirstPing){ PingF.stop(); PingR.addEventListener(TimerEvent.TIMER, PingServer); PingR.start(); FirstPing = false; }; } public static function CustomMetric(_arg1:String, _arg2:String=null):void{ if (!Enabled){ return; }; if (_arg2 == null){ _arg2 = ""; }; Send(((("c/" + Clean(_arg1)) + "/") + Clean(_arg2))); } public static function LevelCounterMetric(_arg1:String, _arg2):void{ if (!Enabled){ return; }; Send(((("lc/" + Clean(_arg1)) + "/") + Clean(_arg2))); } public static function LevelRangedMetric(_arg1:String, _arg2, _arg3:int):void{ if (!Enabled){ return; }; Send(((((("lr/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3)); } public static function LevelAverageMetric(_arg1:String, _arg2, _arg3:int):void{ if (!Enabled){ return; }; Send(((((("la/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3)); } private static function Send(_arg1:String, _arg2:Boolean=false):void{ Request.Queue(_arg1); if (((((Request.Ready) || (_arg2))) || (!(Queue)))){ Request.Send(); Request = new LogRequest(); }; } private static function Clean(_arg1:String):String{ return (escape(_arg1.replace("/", "\\").replace("~", "-"))); } private static function GetCookie(_arg1:String):int{ var _local2:SharedObject = SharedObject.getLocal("swfstats"); if (_local2.data[_arg1] == undefined){ return (0); }; return (int(_local2.data[_arg1])); } private static function SaveCookie(_arg1:String, _arg2:int):void{ var _local3:SharedObject = SharedObject.getLocal("swfstats"); _local3.data[_arg1] = _arg2.toString(); _local3.flush(); } private static function GetUrl(_arg1:String):String{ var url:String; var defaulturl = _arg1; if (ExternalInterface.available){ try { url = String(ExternalInterface.call("window.location.href.toString")); } catch(s:Error) { url = defaulturl; }; } else { if (defaulturl.indexOf("http://") == 0){ url = defaulturl; }; }; if ((((((url == null)) || ((url == "")))) || ((url == "null")))){ if ((((Security.sandboxType == "localWithNetwork")) || ((Security.sandboxType == "localTrusted")))){ url = "http://local-testing/"; } else { url = null; }; }; return (escape(url)); } } }//package SWFStats
Section 168
//LogRequest (SWFStats.LogRequest) package SWFStats { import flash.events.*; import flash.net.*; public final class LogRequest { private var Data:String;// = "" private var Pieces:int; public var Ready:Boolean;// = false private static var Failed:int = 0; public function Queue(_arg1:String):void{ if (Failed > 3){ return; }; this.Pieces++; this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1)); if ((((this.Pieces == 8)) || ((this.Data.length > 300)))){ this.Ready = true; }; } public function Send():void{ var _local1:URLLoader = new URLLoader(); _local1.addEventListener(IOErrorEvent.IO_ERROR, this.IOErrorHandler); _local1.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.StatusChange); _local1.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.SecurityErrorHandler); _local1.load(new URLRequest((((((((((("http://tracker.swfstats.com/Games/q.aspx?guid=" + Log.GUID) + "&swfid=") + Log.SWFID) + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z"))); trace((((((((((("http://tracker.swfstats.com/Games/q.aspx?guid=" + Log.GUID) + "&swfid=") + Log.SWFID) + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z")); } private function IOErrorHandler(_arg1:IOErrorEvent):void{ Failed++; } private function SecurityErrorHandler(_arg1:SecurityErrorEvent):void{ } private function StatusChange(_arg1:HTTPStatusEvent):void{ } } }//package SWFStats
Section 169
//MathUtils (Utils.MathUtils) package Utils { public class MathUtils { private static const m_radToGradKoef:Number = 57.2957795130823; private static const m_gradToRadKoef:Number = 0.0174532925199433; private static var m_values:Array = [0, 1, 2, 3]; private static var m_id:int = 4; public static function RandomRangeInt(_arg1:int, _arg2:Number):int{ return (Round((_arg1 + ((_arg2 - _arg1) * Math.random())))); } public static function RandomRange(_arg1:Number, _arg2:Number):Number{ return ((_arg1 + ((_arg2 - _arg1) * Math.random()))); } public static function RadToGrad(_arg1:Number):Number{ return ((_arg1 * m_radToGradKoef)); } public static function GradToRad(_arg1:Number):Number{ return ((_arg1 * m_gradToRadKoef)); } public static function Sign(_arg1:Number):Number{ if (_arg1 > 0){ return (1); }; if (_arg1 < 0){ return (-1); }; return (0); } public static function Round(_arg1:Number):int{ return (int((_arg1 + 0.5))); } public static function anyOfString(... _args):String{ return ((_args[int((_args.length * Math.random()))] as String)); } public static function anyOfNumber(... _args):Number{ return ((_args[int((_args.length * Math.random()))] as Number)); } 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 TrueRandomRangeInt():int{ var _local1:int; var _local2:int; if (m_id == 5){ m_values.length = 0; m_id = 0; _local1 = 0; while (_local1 < 4) { do { _local2 = MathUtils.RandomRangeInt(0, 3); } while (m_values.indexOf(_local2) != -1); m_values.push(_local2); _local1++; }; }; return (m_values[m_id++]); } } }//package Utils
Section 170
//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 Sign(_arg1:Number):Number{ if (_arg1 == 0){ return (0); }; return (((_arg1 < 0)) ? -1 : 1); } public static function SetPosition(_arg1:DisplayObject, _arg2:Point):void{ _arg1.x = _arg2.x; _arg1.y = _arg2.y; } 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 RandomRangeInt(_arg1:int, _arg2:int):int{ return (Math.round((_arg1 + (Math.random() * (_arg2 - _arg1))))); } 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 171
//Vector3 (Utils.Vector3) package Utils { import Box2D.Common.Math.*; import flash.geom.*; public final class Vector3 { public var x:Number; public var y:Number; public var z:Number; public function Vector3(_arg1:Number, _arg2:Number, _arg3:Number){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } final public function killNaN():void{ if (isNaN(x)){ x = 0; }; if (isNaN(y)){ y = 0; }; if (isNaN(z)){ z = 0; }; } final public function isEqual(_arg1:Vector3):Boolean{ return ((((((x == _arg1.x)) && ((y == _arg1.y)))) && ((z == _arg1.z)))); } final public function haveNaN():Boolean{ return (((((isNaN(z)) || (isNaN(y)))) || (isNaN(z)))); } final public function clone():Vector3{ return (new Vector3(x, y, z)); } final public function normalizedCopy():Vector3{ var _local1:Number = (1 / length()); if (_local1 != 0){ return (new Vector3((x * _local1), (y * _local1), (z * _local1))); }; return (zero()); } public function toPoint():Point{ return (new Point(x, y)); } final public function dotProduct(_arg1:Vector3):Number{ return ((((x * _arg1.x) + (y * _arg1.y)) + (z * _arg1.z))); } 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)))); } final public function normalize():Vector3{ var _local1:Number = (1 / length()); x = (x * _local1); y = (y * _local1); z = (z * _local1); return (this); } 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 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 length():Number{ return (Math.sqrt(squaredLength())); } final public function squaredLength():Number{ return ((((x * x) + (y * y)) + (z * z))); } final public function sub(_arg1:Vector3):Vector3{ return (new Vector3((x - _arg1.x), (y - _arg1.y), (z - _arg1.z))); } final public function add(_arg1:Vector3):Vector3{ return (new Vector3((x + _arg1.x), (y + _arg1.y), (z + _arg1.z))); } final public function mul(_arg1:Number):Vector3{ return (new Vector3((x * _arg1), (y * _arg1), (z * _arg1))); } final public function negate():Vector3{ return (new Vector3(-(x), -(y), -(z))); } final public function isLengthLess(_arg1:Number):Boolean{ return ((squaredLength() < (_arg1 * _arg1))); } final public function toString():String{ return ((((((((("v: " + "x=") + x.toFixed(3)) + ", ") + "y=") + y.toFixed(3)) + ", ") + "z=") + z.toFixed(3))); } public static function fromPoint(_arg1:Point):Vector3{ return (new Vector3(_arg1.x, _arg1.y, 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 zero():Vector3{ return (new Vector3(0, 0, 0)); } } }//package Utils
Section 172
//ach_1 (ach_1) package { public dynamic class ach_1 extends Achievement { } }//package
Section 173
//ach_10 (ach_10) package { public dynamic class ach_10 extends Achievement { } }//package
Section 174
//ach_11 (ach_11) package { public dynamic class ach_11 extends Achievement { } }//package
Section 175
//ach_12 (ach_12) package { public dynamic class ach_12 extends Achievement { } }//package
Section 176
//ach_13 (ach_13) package { public dynamic class ach_13 extends Achievement { } }//package
Section 177
//ach_14 (ach_14) package { public dynamic class ach_14 extends Achievement { } }//package
Section 178
//ach_15 (ach_15) package { public dynamic class ach_15 extends Achievement { } }//package
Section 179
//ach_2 (ach_2) package { public dynamic class ach_2 extends Achievement { } }//package
Section 180
//ach_3 (ach_3) package { public dynamic class ach_3 extends Achievement { } }//package
Section 181
//ach_4 (ach_4) package { public dynamic class ach_4 extends Achievement { } }//package
Section 182
//ach_5 (ach_5) package { public dynamic class ach_5 extends Achievement { } }//package
Section 183
//ach_6 (ach_6) package { public dynamic class ach_6 extends Achievement { } }//package
Section 184
//ach_7 (ach_7) package { public dynamic class ach_7 extends Achievement { } }//package
Section 185
//ach_8 (ach_8) package { public dynamic class ach_8 extends Achievement { } }//package
Section 186
//ach_9 (ach_9) package { public dynamic class ach_9 extends Achievement { } }//package
Section 187
//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 update(_arg1:Event):void{ if (m_hint){ m_hint.update(); }; } private function onMouseMove(_arg1:MouseEvent):void{ if (m_hint){ m_hint.x = _arg1.stageX; m_hint.y = _arg1.stageY; }; } 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); } public function setHint(_arg1:Hint):void{ m_hint = _arg1; m_hint.x = x; m_hint.y = y; } 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 188
//Achievements (Achievements) package { public class Achievements { public static const HALF_COMPLETED:String = "HALF_COMPLETED"; public static const FULL_COMPLETED:String = "FULL_COMPLETED"; public static const WITH_STAR_40:String = "WITH_STAR_40"; public static const ACCURACY_70:String = "ACCURACY_70"; public static const GRIFS_KILLED:String = "GRIFS_KILLED"; public static const SAVES_50:String = "SAVES_50"; public static const SAVES_100:String = "SAVES_100"; public static const CROWN:String = "CROWN"; public static const HOUR_PLAYED:String = "HOUR_PLAYED"; public static const TWO_HOURS_PLAYED:String = "TWO_HOURS_PLAYED"; public static const LEVELS_WITHOUT_LOSE:String = "LEVELS_WITHOUT_LOSE"; public static const LEVELS_WITHOUT_INJURE:String = "LEVELS_WITHOUT_INJURE"; public static const LEVEL_24_IN_5_SHOT:String = "LEVEL_24_IN_5_SHOT"; public static const LEVEL_44_IN_7_SHOT:String = "LEVEL_44_IN_7_SHOT"; public static const ALL:Array = [HALF_COMPLETED, FULL_COMPLETED, WITH_STAR_40, ACCURACY_70, GRIFS_KILLED, SAVES_50, SAVES_100, CROWN, HOUR_PLAYED, TWO_HOURS_PLAYED, LEVELS_WITHOUT_LOSE, LEVELS_WITHOUT_INJURE, LEVEL_24_IN_5_SHOT, LEVEL_44_IN_7_SHOT]; } }//package
Section 189
//AchievementsStateView (AchievementsStateView) package { import flash.display.*; public dynamic class AchievementsStateView extends MovieClip { public var CROWN:ach_15; public var SAVES_50:ach_5; public var LEVEL_44_IN_7_SHOT:ach_2; public var m_buttonMenu:SimpleButton; public var HOUR_PLAYED:ach_7; public var LEVEL_24_IN_5_SHOT:ach_1; public var FULL_COMPLETED:ach_10; public var GRIFS_KILLED:ach_12; public var HALF_COMPLETED:ach_9; public var ACCURACY_70:ach_13; public var LEVELS_WITHOUT_INJURE:ach_4; public var TWO_HOURS_PLAYED:ach_8; public var SAVES_100:ach_6; public var WITH_STAR_40:ach_11; public var LEVELS_WITHOUT_LOSE:ach_3; } }//package
Section 190
//add_arrows_sound_0 (add_arrows_sound_0) package { import flash.media.*; public dynamic class add_arrows_sound_0 extends Sound { } }//package
Section 191
//add_arrows_sound_1 (add_arrows_sound_1) package { import flash.media.*; public dynamic class add_arrows_sound_1 extends Sound { } }//package
Section 192
//AddArrowClip (AddArrowClip) package { import flash.display.*; import flash.text.*; public dynamic class AddArrowClip extends MovieClip { public var m_text:TextField; } }//package
Section 193
//ambient_1 (ambient_1) package { import flash.media.*; public dynamic class ambient_1 extends Sound { } }//package
Section 194
//ambient_22 (ambient_22) package { import flash.media.*; public dynamic class ambient_22 extends Sound { } }//package
Section 195
//AmmoGhost10 (AmmoGhost10) package { import States.PlayState.*; public dynamic class AmmoGhost10 extends AmmoGhost { } }//package
Section 196
//AmmoGhost3 (AmmoGhost3) package { import States.PlayState.*; public dynamic class AmmoGhost3 extends AmmoGhost { } }//package
Section 197
//AmmoGhost5 (AmmoGhost5) package { import States.PlayState.*; public dynamic class AmmoGhost5 extends AmmoGhost { } }//package
Section 198
//AmmoHint (AmmoHint) package { import States.PlayState.*; public dynamic class AmmoHint extends HintText { } }//package
Section 199
//arrow_ghost (arrow_ghost) package { import flash.media.*; public dynamic class arrow_ghost extends Sound { } }//package
Section 200
//ArrowGhost1 (ArrowGhost1) package { import States.PlayState.*; public dynamic class ArrowGhost1 extends HedgehogGhost { } }//package
Section 201
//ArrowGhost3 (ArrowGhost3) package { import States.PlayState.*; public dynamic class ArrowGhost3 extends HedgehogGhost { } }//package
Section 202
//ArrowGhost4 (ArrowGhost4) package { import States.PlayState.*; public dynamic class ArrowGhost4 extends HedgehogGhost { } }//package
Section 203
//ArrowGhostHint (ArrowGhostHint) package { import States.PlayState.*; public dynamic class ArrowGhostHint extends HintText { } }//package
Section 204
//ArtCloud (ArtCloud) package { import flash.display.*; public dynamic class ArtCloud extends MovieClip { } }//package
Section 205
//AsyncClip (AsyncClip) package { import flash.display.*; public class AsyncClip extends MovieClip { public function AsyncClip(){ gotoAndPlay(int((totalFrames * Math.random()))); } } }//package
Section 206
//Back1 (Back1) package { import flash.display.*; public dynamic class Back1 extends MovieClip { } }//package
Section 207
//Back2 (Back2) package { import flash.display.*; public dynamic class Back2 extends MovieClip { } }//package
Section 208
//Back3 (Back3) package { import flash.display.*; public dynamic class Back3 extends MovieClip { } }//package
Section 209
//Back4 (Back4) package { import flash.display.*; public dynamic class Back4 extends MovieClip { } }//package
Section 210
//Background (Background) package { import flash.display.*; public dynamic class Background extends MovieClip { } }//package
Section 211
//BgStones (BgStones) package { import flash.display.*; public dynamic class BgStones extends MovieClip { } }//package
Section 212
//BigStick (BigStick) package { import States.PlayState.*; public dynamic class BigStick extends StaticBoxIsNotStone { } }//package
Section 213
//black_square (black_square) package { import flash.display.*; public dynamic class black_square extends MovieClip { } }//package
Section 214
//BonusGameBack (BonusGameBack) package { import flash.display.*; public dynamic class BonusGameBack extends MovieClip { } }//package
Section 215
//bow_shoot (bow_shoot) package { import flash.media.*; public dynamic class bow_shoot extends Sound { } }//package
Section 216
//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 frame10(){ stop(); } function frame18(){ stop(); } } }//package
Section 217
//BowPoint (BowPoint) package { import flash.display.*; public dynamic class BowPoint extends MovieClip { } }//package
Section 218
//Box (Box) package { import flash.display.*; public dynamic class Box extends MovieClip { } }//package
Section 219
//Brick (Brick) package { import States.PlayState.*; public dynamic class Brick extends StaticBoxIsStone { } }//package
Section 220
//BrickNoLeft (BrickNoLeft) package { import States.PlayState.*; public dynamic class BrickNoLeft extends StaticBoxIsStone { } }//package
Section 221
//BrickNoRight (BrickNoRight) package { import States.PlayState.*; public dynamic class BrickNoRight extends StaticBoxIsStone { } }//package
Section 222
//BrickNoRightNoLeft (BrickNoRightNoLeft) package { import States.PlayState.*; public dynamic class BrickNoRightNoLeft extends StaticBoxIsStone { } }//package
Section 223
//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 handleRemoveFromStage(_arg1:Event):void{ removeEventListener(MouseEvent.CLICK, onClick); removeEventListener(Event.REMOVED_FROM_STAGE, handleRemoveFromStage); } public function isChecked():Boolean{ return (m_isChecked); } public function setChecked(_arg1:Boolean):void{ m_isChecked = _arg1; if (m_isChecked){ gotoAndStop(2); } else { gotoAndStop(1); }; } private function onClick(_arg1:MouseEvent):void{ setChecked(!(m_isChecked)); dispatchEvent(new Event(EVENT_CHANGE)); } } }//package
Section 224
//click (click) package { import flash.media.*; public dynamic class click extends Sound { } }//package
Section 225
//ClickToContinue (ClickToContinue) package { import flash.display.*; public dynamic class ClickToContinue extends MovieClip { } }//package
Section 226
//CloseCross (CloseCross) package { import flash.display.*; public dynamic class CloseCross extends SimpleButton { } }//package
Section 227
//Cloud0 (Cloud0) package { import States.PlayState.*; public dynamic class Cloud0 extends Cloud { } }//package
Section 228
//Cloud1 (Cloud1) package { import States.PlayState.*; public dynamic class Cloud1 extends Cloud { } }//package
Section 229
//Cloud2 (Cloud2) package { import States.PlayState.*; public dynamic class Cloud2 extends Cloud { } }//package
Section 230
//Cloud3 (Cloud3) package { import States.PlayState.*; public dynamic class Cloud3 extends Cloud { } }//package
Section 231
//Cloud4 (Cloud4) package { import States.PlayState.*; public dynamic class Cloud4 extends Cloud { } }//package
Section 232
//Cloud5 (Cloud5) package { import States.PlayState.*; public dynamic class Cloud5 extends Cloud { } }//package
Section 233
//Cloud6 (Cloud6) package { import States.PlayState.*; public dynamic class Cloud6 extends Cloud { } }//package
Section 234
//Cloud7 (Cloud7) package { import States.PlayState.*; public dynamic class Cloud7 extends Cloud { } }//package
Section 235
//Cloud8 (Cloud8) package { import States.PlayState.*; public dynamic class Cloud8 extends Cloud { } }//package
Section 236
//Cloud9 (Cloud9) package { import States.PlayState.*; public dynamic class Cloud9 extends Cloud { } }//package
Section 237
//ComboSave2Hint (ComboSave2Hint) package { import States.PlayState.*; public dynamic class ComboSave2Hint extends HintText { } }//package
Section 238
//ComboSave3Hint (ComboSave3Hint) package { import States.PlayState.*; public dynamic class ComboSave3Hint extends HintText { } }//package
Section 239
//ComposedStone1 (ComposedStone1) package { import States.PlayState.*; public dynamic class ComposedStone1 extends StaticBoxIsStone { } }//package
Section 240
//ComposedStone2 (ComposedStone2) package { import States.PlayState.*; public dynamic class ComposedStone2 extends StaticBoxIsStone { } }//package
Section 241
//ComposedStone21 (ComposedStone21) package { import States.PlayState.*; public dynamic class ComposedStone21 extends StaticBoxIsStone { } }//package
Section 242
//ComposedStone23 (ComposedStone23) package { import States.PlayState.*; public dynamic class ComposedStone23 extends StaticBoxIsStone { } }//package
Section 243
//ComposedStone24 (ComposedStone24) package { import States.PlayState.*; public dynamic class ComposedStone24 extends StaticBoxIsStone { } }//package
Section 244
//ComposedStone25 (ComposedStone25) package { import States.PlayState.*; public dynamic class ComposedStone25 extends StaticBoxIsStone { } }//package
Section 245
//ComposedStone55 (ComposedStone55) package { import States.PlayState.*; public dynamic class ComposedStone55 extends StaticBoxIsStone { } }//package
Section 246
//ComposedStone96 (ComposedStone96) package { import States.PlayState.*; public dynamic class ComposedStone96 extends StaticBoxIsStone { } }//package
Section 247
//ComposedStone98 (ComposedStone98) package { import States.PlayState.*; public dynamic class ComposedStone98 extends StaticBoxIsStone { } }//package
Section 248
//ComposedStone99 (ComposedStone99) package { import States.PlayState.*; public dynamic class ComposedStone99 extends StaticBoxIsStone { } }//package
Section 249
//Constant (Constant) package { public class Constant { public static const CPMSTAR_PREROLL_CODE:String = "2728Q46599977"; public static const CPMSTAR_INTER_LEVEL_CODE:String = "2729Q9467A146"; public static const WINDOW_WIDTH:Number = 640; public static const WINDOW_HEIGHT:Number = 480; public static const BOMB_IMPULSE:Number = 50; public static const BOMB_DISTANCE:Number = 100; 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 TIME_STEP:Number = 0.025; public static const PHYS_SCALE:Number = 30; public static const SHARED_OBJECT_NAME:String = "gibbets_2_levels_pack_so_name"; public static const MIN_SHOOTING_POWER:Number = 4; public static const MAX_SHOOTING_POWER:Number = 25; public static const LEFT_EDGE_MARKER_NAME:String = "LEFT_EDGE_MARKER_NAME"; public static const RIGHT_EDGE_MARKER_NAME:String = "RIGHT_EDGE_MARKER_NAME"; public static var m_debugMode:Boolean = false; } }//package
Section 250
//CowCry (CowCry) package { import flash.display.*; public dynamic class CowCry extends MovieClip { public function CowCry(){ addFrameScript(56, frame57); } function frame57(){ stop(); } } }//package
Section 251
//CowHere (CowHere) package { import flash.display.*; public dynamic class CowHere extends MovieClip { } }//package
Section 252
//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 253
//CowNormal (CowNormal) package { import flash.display.*; public dynamic class CowNormal extends MovieClip { } }//package
Section 254
//CreditsStateView (CreditsStateView) package { import flash.display.*; public dynamic class CreditsStateView extends MovieClip { public var m_musicHanger:HangerPoint; public var m_buttonMenu:SimpleButton; public var m_notdoppler:SimpleButton; public var m_mailLink:SimpleButton; public var m_programmingHanger:HangerPoint; public var m_sky:MovieClip; public var m_blogLink:SimpleButton; public var m_artHanger:HangerPoint; } }//package
Section 255
//cry_0 (cry_0) package { import flash.media.*; public dynamic class cry_0 extends Sound { } }//package
Section 256
//cry_1 (cry_1) package { import flash.media.*; public dynamic class cry_1 extends Sound { } }//package
Section 257
//cry_2 (cry_2) package { import flash.media.*; public dynamic class cry_2 extends Sound { } }//package
Section 258
//cry_3 (cry_3) package { import flash.media.*; public dynamic class cry_3 extends Sound { } }//package
Section 259
//cry_4 (cry_4) package { import flash.media.*; public dynamic class cry_4 extends Sound { } }//package
Section 260
//cry_5 (cry_5) package { import flash.media.*; public dynamic class cry_5 extends Sound { } }//package
Section 261
//cry_6 (cry_6) package { import flash.media.*; public dynamic class cry_6 extends Sound { } }//package
Section 262
//cry_7 (cry_7) package { import flash.media.*; public dynamic class cry_7 extends Sound { } }//package
Section 263
//death_cry (death_cry) package { import flash.media.*; public dynamic class death_cry extends Sound { } }//package
Section 264
//DoubleSave (DoubleSave) package { import flash.display.*; public dynamic class DoubleSave extends MovieClip { } }//package
Section 265
//exploison (exploison) package { import flash.media.*; public dynamic class exploison extends Sound { } }//package
Section 266
//FaceColors_1 (FaceColors_1) package { import flash.display.*; public dynamic class FaceColors_1 extends MovieClip { } }//package
Section 267
//FaceColors_2 (FaceColors_2) package { import flash.display.*; public dynamic class FaceColors_2 extends MovieClip { } }//package
Section 268
//FaceColors_3 (FaceColors_3) package { import flash.display.*; public dynamic class FaceColors_3 extends MovieClip { } }//package
Section 269
//FaceColors_4 (FaceColors_4) package { import flash.display.*; public dynamic class FaceColors_4 extends MovieClip { } }//package
Section 270
//flower_0 (flower_0) package { import States.PlayState.*; public dynamic class flower_0 extends Frontground { } }//package
Section 271
//flower_1 (flower_1) package { import States.PlayState.*; public dynamic class flower_1 extends Frontground { } }//package
Section 272
//flower_2 (flower_2) package { import States.PlayState.*; public dynamic class flower_2 extends Frontground { } }//package
Section 273
//flower_3 (flower_3) package { import States.PlayState.*; public dynamic class flower_3 extends Frontground { } }//package
Section 274
//flower_4 (flower_4) package { import States.PlayState.*; public dynamic class flower_4 extends Frontground { } }//package
Section 275
//flower_5 (flower_5) package { import States.PlayState.*; public dynamic class flower_5 extends Frontground { } }//package
Section 276
//flower_6 (flower_6) package { import States.PlayState.*; public dynamic class flower_6 extends Frontground { } }//package
Section 277
//GameCompleteCloud (GameCompleteCloud) package { import flash.display.*; public dynamic class GameCompleteCloud extends MovieClip { } }//package
Section 278
//GameCompleteStateView (GameCompleteStateView) package { import flash.display.*; public dynamic class GameCompleteStateView extends MovieClip { public var m_buttonGibbets2:SimpleButton; public var m_buttonGibbets1:SimpleButton; public var m_notDoppler:SimpleButton; public var m_buttonMenu:SimpleButton; public var m_totalScore:MovieClip; public var m_buttonMoreGames:SimpleButton; public var m_gibbetFront:MovieClip; public var m_buttonSubmit:SimpleButton; } }//package
Section 279
//GameData (GameData) package { import Main.*; import States.PlayState.*; import States.GrifShooting.*; import States.*; import flash.net.*; import flash.system.*; public class GameData { public static const EASY_MODE:String = "EASY_MODE"; public static const NORMAL_MODE:String = "NORMAL_MODE"; public static const HARD_MODE:String = "HARD_MODE"; public static const NOT_SELECTED_MODE:String = "NOT_SELECTED_MODE"; public static const totalLevelsCount:int = 54; public static const SCREEN_1_24:String = "screen_1_24"; public static const SCREEN_25_48:String = "screen_25_48"; public static const SCREEN_49_54:String = "screen_49_54"; private static var m_difficulty:String = "NOT_SELECTED_MODE"; public static var m_invertedControl:Boolean = false; public static var m_isBloodDisabled:Boolean = false; private static var m_scorePerLevel:Array = new Array(); private static var m_levelsWithStar:Array = new Array(); private static var m_levelsCompleted:Array = new Array(); private static var m_alreadyPlayed:Array = new Array(); private static var m_achievements:Array = new Array(); private static var m_savedCount:int = 0; private static var m_killedCount:int = 0; private static var m_grifsCount:int = 0; private static var m_levelsInRaw:int = 0; private static var m_noInjureInRaw:int = 0; public static var m_isHintsOn:Boolean = true; private static var m_haveAds:Boolean = true; private static var m_lastPlayedLevelNum:int = -1; private static var m_oldAchiemeventCount:int; private static var m_curSelectLevelScreen:String = null; public static var m_isKongregate:Boolean = false; public static var kongregate; public static function setDifficulty(_arg1:String):void{ m_difficulty = _arg1; } public static function getDifficulty():String{ return (m_difficulty); } public static function isHintsOn():Boolean{ return (m_isHintsOn); } public static function setHideTips(_arg1:Boolean):void{ if (_arg1){ hideTips(); } else { showTips(); }; } public static function get levelsCompleted():int{ var _local2:Boolean; var _local1:int; for each (_local2 in m_levelsCompleted) { if (_local2){ _local1++; }; }; return (_local1); } public static function get levelsAviable():int{ return (Math.min((levelsCompleted + 3), totalLevelsCount)); } 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 getBestScore(_arg1:int):int{ return (m_scorePerLevel[_arg1]); } public static function getBestScoreOnLevel(_arg1:int):int{ return (m_scorePerLevel[_arg1]); } public static function onLoseLevel(_arg1:int, _arg2:int):void{ m_levelsInRaw = 0; m_noInjureInRaw = 0; m_killedCount = (m_killedCount + _arg2); save(); } 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 onRestart():void{ m_noInjureInRaw = 0; m_levelsInRaw = 0; } 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); }; m_levelsCompleted[_arg1] = true; if (levelsCompleted == 24){ giveAchievement(Achievements.HALF_COMPLETED); onEnterSelectLevelScreen(SCREEN_25_48); }; if (levelsCompleted == 48){ giveAchievement(Achievements.FULL_COMPLETED); onEnterSelectLevelScreen(SCREEN_49_54); }; var _local5:int; var _local6:int; while (_local6 < levelsAviable) { 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 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.data.m_difficulty = m_difficulty; } public static function init():void{ var _local1:int; while (_local1 < totalLevelsCount) { m_alreadyPlayed.push(false); _local1++; }; } public static function isAlreadyPlayed(_arg1):Boolean{ return (m_alreadyPlayed[_arg1]); } 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; m_difficulty = _local2.data.m_difficulty; 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++; }; m_levelsCompleted = new Array(); _local1 = 0; while (_local1 < totalLevelsCount) { m_levelsCompleted.push(false); _local1++; }; if (Capabilities.os.indexOf("Windows") == -1){ m_invertedControl = true; }; }; if (m_achievements == null){ m_achievements = new Array(); }; } public static function isLevelCompleted(_arg1:int):Boolean{ return (m_levelsCompleted[_arg1]); } public static function isLevelWithStar(_arg1:int):Boolean{ return (m_levelsWithStar[_arg1]); } public static function resetGame():void{ var _local1:int; m_savedCount = 0; m_killedCount = 0; m_grifsCount = 0; m_levelsInRaw = 0; m_noInjureInRaw = 0; m_difficulty = NOT_SELECTED_MODE; 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 = new Array(); _local1 = 0; while (_local1 < totalLevelsCount) { m_levelsCompleted.push(false); _local1++; }; m_achievements = new Array(); onEnterSelectLevelScreen(SCREEN_1_24); save(); } public static function onStartLevel(_arg1:int):void{ m_alreadyPlayed[_arg1] = true; m_oldAchiemeventCount = m_achievements.length; } 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 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 onEnterSelectLevelScreen(_arg1:String):void{ m_curSelectLevelScreen = _arg1; } public static function haveAchievement(_arg1:String):Boolean{ return (!((m_achievements.indexOf(_arg1) == -1))); } 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 hideTips():void{ m_isHintsOn = false; save(); } 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 haveAds():Boolean{ return (m_haveAds); } public static function hideAds():void{ m_haveAds = false; } public static function canSubmitScore():Boolean{ return (true); } 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()); }; }; } private static function submitKongregateLevel():void{ if (hasKongregateAPI()){ try { kongregate.stats.submit("LevelsCompleted", levelsCompleted); } catch(e:Error) { trace(e, e.getStackTrace()); }; }; } public static function canSkipLevel(_arg1:int):Boolean{ return (((_arg1 + 1) < levelsAviable)); } } }//package
Section 280
//GamePausedStateView (GamePausedStateView) package { import flash.display.*; public dynamic class GamePausedStateView extends MovieClip { public var m_clickToContinue:ClickToContinue; } }//package
Section 281
//GiantSky (GiantSky) package { import flash.display.*; public dynamic class GiantSky extends MovieClip { } }//package
Section 282
//GibbetColumn (GibbetColumn) package { import States.PlayState.*; public dynamic class GibbetColumn extends StaticBoxIsNotStone { } }//package
Section 283
//GibbetGround (GibbetGround) package { import flash.display.*; public dynamic class GibbetGround extends MovieClip { } }//package
Section 284
//GibbetObliquely (GibbetObliquely) package { import flash.display.*; public dynamic class GibbetObliquely extends MovieClip { } }//package
Section 285
//GibbetStick (GibbetStick) package { import States.PlayState.*; public dynamic class GibbetStick extends StaticBoxIsNotStone { } }//package
Section 286
//GrifShootingStateView (GrifShootingStateView) package { import flash.display.*; public dynamic class GrifShootingStateView extends MovieClip { public var m_buttonSkip:SimpleButton; public var m_buttonMenu:SimpleButton; public var m_arrowsLeftClip:MovieClip; public var m_timeLeftClip:MovieClip; public var m_scoreClip:MovieClip; } }//package
Section 287
//GrifShootingWinStateView (GrifShootingWinStateView) package { import flash.display.*; import flash.text.*; public dynamic class GrifShootingWinStateView extends MovieClip { public var m_star:MovieClip; public var m_bestScore:MovieClip; public var m_buttonNewAchievement:SimpleButton; public var m_buttonMenu:SimpleButton; public var m_accuracy:MovieClip; public var m_buttonMoreGames:SimpleButton; public var m_currentScore:MovieClip; public var m_levelNum:TextField; public var m_buttonNext:SimpleButton; } }//package
Section 288
//Ground (Ground) package { import flash.display.*; public dynamic class Ground extends MovieClip { } }//package
Section 289
//GuiArrow (GuiArrow) package { import flash.display.*; public dynamic class GuiArrow extends SimpleButton { } }//package
Section 290
//HangerFace (HangerFace) package { import flash.display.*; public dynamic class HangerFace extends MovieClip { public function HangerFace(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 291
//HangerPoint (HangerPoint) package { import flash.display.*; public dynamic class HangerPoint extends MovieClip { } }//package
Section 292
//HealthBar (HealthBar) package { import flash.display.*; public dynamic class HealthBar extends MovieClip { } }//package
Section 293
//herb (herb) package { import States.PlayState.*; public dynamic class herb extends Frontground { } }//package
Section 294
//HideTipsPanel (HideTipsPanel) package { import flash.display.*; public dynamic class HideTipsPanel extends MovieClip { public var m_checkBox:CheckBox; } }//package
Section 295
//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; public var m_text:TextField; private var m_isShow:Boolean;// = false public function Hint(){ mouseEnabled = false; mouseChildren = false; 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 x(_arg1:Number):void{ super.x = _arg1; if (super.x < 0){ super.x = 0; }; if ((super.x + width) > 640){ super.x = (640 - width); }; } 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); }; } 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 isShow():Boolean{ return (m_isShow); } public function hide():void{ m_isShow = false; } public function show():void{ m_isShow = true; } } }//package
Section 296
//HintPoint (HintPoint) package { import flash.display.*; public dynamic class HintPoint extends MovieClip { } }//package
Section 297
//InShader (InShader) package { import flash.display.*; public class InShader extends MovieClip { private var m_blackSquare:MovieClip; private var m_liveTime:Number;// = 0 private var m_maxShadeTime:Number; private var m_maxShade:Number; 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 restart():void{ m_liveTime = 0; m_blackSquare.alpha = 0; } 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); } } }//package
Section 298
//IntroButton (IntroButton) package { import flash.display.*; public dynamic class IntroButton extends SimpleButton { } }//package
Section 299
//InvertControlHint (InvertControlHint) package { import States.PlayState.*; public dynamic class InvertControlHint extends HintText { } }//package
Section 300
//InvertedCowHere (InvertedCowHere) package { import flash.display.*; public dynamic class InvertedCowHere extends MovieClip { } }//package
Section 301
//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 302
//InvertedGibbetObliquely (InvertedGibbetObliquely) package { import flash.display.*; public dynamic class InvertedGibbetObliquely extends MovieClip { } }//package
Section 303
//InvertedVultureHere (InvertedVultureHere) package { import flash.display.*; public dynamic class InvertedVultureHere extends MovieClip { public var clip:MovieClip; } }//package
Section 304
//LeftEdgeMarker (LeftEdgeMarker) package { import flash.display.*; public dynamic class LeftEdgeMarker extends MovieClip { } }//package
Section 305
//LeftLowerHand_1 (LeftLowerHand_1) package { import flash.display.*; public dynamic class LeftLowerHand_1 extends MovieClip { } }//package
Section 306
//LeftLowerHand_2 (LeftLowerHand_2) package { import flash.display.*; public dynamic class LeftLowerHand_2 extends MovieClip { } }//package
Section 307
//LeftLowerHand_3 (LeftLowerHand_3) package { import flash.display.*; public dynamic class LeftLowerHand_3 extends MovieClip { } }//package
Section 308
//LeftLowerHand_4 (LeftLowerHand_4) package { import flash.display.*; public dynamic class LeftLowerHand_4 extends MovieClip { } }//package
Section 309
//LeftLowerLeg_1 (LeftLowerLeg_1) package { import flash.display.*; public dynamic class LeftLowerLeg_1 extends MovieClip { } }//package
Section 310
//LeftLowerLeg_2 (LeftLowerLeg_2) package { import flash.display.*; public dynamic class LeftLowerLeg_2 extends MovieClip { } }//package
Section 311
//LeftLowerLeg_3 (LeftLowerLeg_3) package { import flash.display.*; public dynamic class LeftLowerLeg_3 extends MovieClip { } }//package
Section 312
//LeftLowerLeg_4 (LeftLowerLeg_4) package { import flash.display.*; public dynamic class LeftLowerLeg_4 extends MovieClip { } }//package
Section 313
//LeftUpperHand_1 (LeftUpperHand_1) package { import flash.display.*; public dynamic class LeftUpperHand_1 extends MovieClip { } }//package
Section 314
//LeftUpperHand_2 (LeftUpperHand_2) package { import flash.display.*; public dynamic class LeftUpperHand_2 extends MovieClip { } }//package
Section 315
//LeftUpperHand_3 (LeftUpperHand_3) package { import flash.display.*; public dynamic class LeftUpperHand_3 extends MovieClip { } }//package
Section 316
//LeftUpperHand_4 (LeftUpperHand_4) package { import flash.display.*; public dynamic class LeftUpperHand_4 extends MovieClip { } }//package
Section 317
//LeftUpperLeg_1 (LeftUpperLeg_1) package { import flash.display.*; public dynamic class LeftUpperLeg_1 extends MovieClip { } }//package
Section 318
//LeftUpperLeg_2 (LeftUpperLeg_2) package { import flash.display.*; public dynamic class LeftUpperLeg_2 extends MovieClip { } }//package
Section 319
//LeftUpperLeg_3 (LeftUpperLeg_3) package { import flash.display.*; public dynamic class LeftUpperLeg_3 extends MovieClip { } }//package
Section 320
//LeftUpperLeg_4 (LeftUpperLeg_4) package { import flash.display.*; public dynamic class LeftUpperLeg_4 extends MovieClip { } }//package
Section 321
//Level00 (Level00) package { import flash.display.*; public dynamic class Level00 extends MovieClip { } }//package
Section 322
//Level01 (Level01) package { import flash.display.*; public dynamic class Level01 extends MovieClip { } }//package
Section 323
//Level02 (Level02) package { import flash.display.*; public dynamic class Level02 extends MovieClip { } }//package
Section 324
//Level03 (Level03) package { import flash.display.*; public dynamic class Level03 extends MovieClip { } }//package
Section 325
//Level04 (Level04) package { import flash.display.*; public dynamic class Level04 extends MovieClip { } }//package
Section 326
//Level05 (Level05) package { import flash.display.*; public dynamic class Level05 extends MovieClip { } }//package
Section 327
//Level06 (Level06) package { import flash.display.*; public dynamic class Level06 extends MovieClip { } }//package
Section 328
//Level07 (Level07) package { import flash.display.*; public dynamic class Level07 extends MovieClip { } }//package
Section 329
//Level08 (Level08) package { import flash.display.*; public dynamic class Level08 extends MovieClip { } }//package
Section 330
//Level09 (Level09) package { import flash.display.*; public dynamic class Level09 extends MovieClip { } }//package
Section 331
//Level10 (Level10) package { import flash.display.*; public dynamic class Level10 extends MovieClip { } }//package
Section 332
//Level11 (Level11) package { import flash.display.*; public dynamic class Level11 extends MovieClip { } }//package
Section 333
//Level12 (Level12) package { import flash.display.*; public dynamic class Level12 extends MovieClip { } }//package
Section 334
//Level13 (Level13) package { import flash.display.*; public dynamic class Level13 extends MovieClip { } }//package
Section 335
//Level14 (Level14) package { import flash.display.*; public dynamic class Level14 extends MovieClip { } }//package
Section 336
//Level15 (Level15) package { import flash.display.*; public dynamic class Level15 extends MovieClip { } }//package
Section 337
//Level16 (Level16) package { import flash.display.*; public dynamic class Level16 extends MovieClip { } }//package
Section 338
//Level17 (Level17) package { import flash.display.*; public dynamic class Level17 extends MovieClip { } }//package
Section 339
//Level18 (Level18) package { import flash.display.*; public dynamic class Level18 extends MovieClip { } }//package
Section 340
//Level19 (Level19) package { import flash.display.*; public dynamic class Level19 extends MovieClip { } }//package
Section 341
//Level20 (Level20) package { import flash.display.*; public dynamic class Level20 extends MovieClip { } }//package
Section 342
//Level21 (Level21) package { import flash.display.*; public dynamic class Level21 extends MovieClip { } }//package
Section 343
//Level22 (Level22) package { import flash.display.*; public dynamic class Level22 extends MovieClip { } }//package
Section 344
//Level23 (Level23) package { import flash.display.*; public dynamic class Level23 extends MovieClip { public var ikNode_1:GiantSky; } }//package
Section 345
//Level24 (Level24) package { import flash.display.*; public dynamic class Level24 extends MovieClip { } }//package
Section 346
//Level25 (Level25) package { import flash.display.*; public dynamic class Level25 extends MovieClip { } }//package
Section 347
//Level26 (Level26) package { import flash.display.*; public dynamic class Level26 extends MovieClip { } }//package
Section 348
//Level27 (Level27) package { import flash.display.*; public dynamic class Level27 extends MovieClip { } }//package
Section 349
//Level28 (Level28) package { import flash.display.*; public dynamic class Level28 extends MovieClip { } }//package
Section 350
//Level29 (Level29) package { import flash.display.*; public dynamic class Level29 extends MovieClip { } }//package
Section 351
//Level30 (Level30) package { import flash.display.*; public dynamic class Level30 extends MovieClip { } }//package
Section 352
//Level31 (Level31) package { import flash.display.*; public dynamic class Level31 extends MovieClip { } }//package
Section 353
//Level32 (Level32) package { import flash.display.*; public dynamic class Level32 extends MovieClip { } }//package
Section 354
//Level33 (Level33) package { import flash.display.*; public dynamic class Level33 extends MovieClip { } }//package
Section 355
//Level34 (Level34) package { import flash.display.*; public dynamic class Level34 extends MovieClip { } }//package
Section 356
//Level35 (Level35) package { import flash.display.*; public dynamic class Level35 extends MovieClip { } }//package
Section 357
//Level36 (Level36) package { import flash.display.*; public dynamic class Level36 extends MovieClip { } }//package
Section 358
//Level37 (Level37) package { import flash.display.*; public dynamic class Level37 extends MovieClip { } }//package
Section 359
//Level38 (Level38) package { import flash.display.*; public dynamic class Level38 extends MovieClip { } }//package
Section 360
//Level39 (Level39) package { import flash.display.*; public dynamic class Level39 extends MovieClip { } }//package
Section 361
//Level40 (Level40) package { import flash.display.*; public dynamic class Level40 extends MovieClip { } }//package
Section 362
//Level41 (Level41) package { import flash.display.*; public dynamic class Level41 extends MovieClip { } }//package
Section 363
//Level42 (Level42) package { import flash.display.*; public dynamic class Level42 extends MovieClip { } }//package
Section 364
//Level43 (Level43) package { import flash.display.*; public dynamic class Level43 extends MovieClip { } }//package
Section 365
//Level44 (Level44) package { import flash.display.*; public dynamic class Level44 extends MovieClip { } }//package
Section 366
//Level45 (Level45) package { import flash.display.*; public dynamic class Level45 extends MovieClip { } }//package
Section 367
//Level46 (Level46) package { import flash.display.*; public dynamic class Level46 extends MovieClip { } }//package
Section 368
//Level47 (Level47) package { import flash.display.*; public dynamic class Level47 extends MovieClip { } }//package
Section 369
//Level48 (Level48) package { import flash.display.*; public dynamic class Level48 extends MovieClip { } }//package
Section 370
//Level49 (Level49) package { import flash.display.*; public dynamic class Level49 extends MovieClip { public var ikNode_2:RopeRings; } }//package
Section 371
//Level50 (Level50) package { import flash.display.*; public dynamic class Level50 extends MovieClip { } }//package
Section 372
//Level51 (Level51) package { import flash.display.*; public dynamic class Level51 extends MovieClip { } }//package
Section 373
//Level52 (Level52) package { import flash.display.*; public dynamic class Level52 extends MovieClip { } }//package
Section 374
//Level53 (Level53) package { import flash.display.*; public dynamic class Level53 extends MovieClip { } }//package
Section 375
//LinksManager (LinksManager) package { import SWFStats.*; import flash.net.*; public class LinksManager { public static const GIBBETS_I_URL:String = "http://www.notdoppler.com/gibbets.php?ref=gibbets2-levelpack"; public static const MAIN_PAGE_URL:String = "http://www.notdoppler.com/?ref=gibbets2-levelpack"; public static const HIGH_SCORE_URL:String = "http://www.notdoppler.com/highscores.php?game=gibbets2lp"; public static const WALKROUTGH_URL:String = "http://www.notdoppler.com/gibbets2-levelpack-walkthrough.php?ref=gibbets2-levelpack"; public static const GIBBETS_II_URL:String = "http://www.notdoppler.com/gibbets2.php?ref=gibbets2-levelpack"; public static const GAMES_FOR_YOUR_SITE:String = "http://www.notdoppler.com/webmasters.php?ref=gibbets2-levelpack"; public static const PRELOADER_SCREEN_BANNER:String = "PRELOADER_SCREEN_BANNER"; public static const PRELOADER_GIBBETS_1:String = "PRELOADER_GIBBETS_1"; public static const PRELOADER_GIBBETS_2:String = "PRELOADER_GIBBETS_2"; public static const INTRO_SCREEN_BUTTON:String = "INTRO_SCREEN_BUTTON"; public static const MAIN_MENU_GIBBETS_1_BUTTON:String = "MAIN_MENU_GIBBETS_1_BUTTON"; public static const MAIN_MENU_GIBBETS_2_BUTTON:String = "MAIN_MENU_GIBBETS_2_BUTTON"; public static const MAIN_MENU_HIGH_SCORE_BUTTON:String = "MAIN_MENU_HIGH_SCORE_BUTTON"; public static const MAIN_MENU_MORE_GAMES_BUTTON:String = "MAIN_MENU_MORE_GAMES_BUTTON"; public static const MAIN_MENU_NOTDOPPLER_BUTTON:String = "MAIN_MENU_NOTDOPPLER_BUTTON"; public static const CREDITS_SCREEN_NOTDOPPLER_BUTTON:String = "CREDITS_SCREEN_NOTDOPPLER_BUTTON"; public static const LOSE_SCREEN_MORE_GAMES_BUTTON:String = "LOSE_SCREEN_MORE_GAMES_BUTTON"; public static const WIN_SCREEN_MORE_GAMES_BUTTON:String = "WIN_SCREEN_MORE_GAMES_BUTTON"; public static const GAME_COMPLETE_NOTDOPPLER_BUTTON:String = "GAME_COMPLETE_NOTDOPPLER_BUTTON"; public static const GAME_COMPLETE_MORE_GAMES_BUTTON:String = "GAME_COMPLETE_MORE_GAMES_BUTTON"; public static const GAME_COMPLETE_GIBBETS_1:String = "GAME_COMPLETE_GIBBETS_1"; public static const GAME_COMPLETE_GIBBETS_2:String = "GAME_COMPLETE_GIBBETS_2"; public static const CONTEXT_MENU_MORE_GAMES:String = "CONTEXT_MENU_MORE_GAMES"; public static const CONTEXT_MENU_NOTDOPPLER:String = "CONTEXT_MENU_NOTDOPPLER"; public static const CONTEXT_MENU_GIBBETS_1:String = "CONTEXT_MENU_GIBBETS_1"; public static const CONTEXT_MENU_GIBBETS_2:String = "CONTEXT_MENU_GIBBETS_2"; public static const CONTEXT_MENU_WALKTHROUGH:String = "CONTEXT_MENU_WALKTHROUGH"; public static const CONTEXT_MENU_GAMES:String = "CONTEXT_MENU_GAMES"; public static const DOWN_PANEL_MORE_GAMES:String = "DOWN_PANEL_MORE_GAMES"; public static const DOWN_PANEL_WALKTHROUGH:String = "DOWN_PANEL_WALKTHROUGH"; public static const SCORE_SUBMISSION:String = "SCORE_SUBMISSION"; public static function goURL(_arg1:String, _arg2:String):void{ Log.CustomMetric(_arg2, "sponsor link clicks"); Log.CustomMetric("overal sponsor link clicks"); navigateToURL(new URLRequest(_arg1), "_blank"); } } }//package
Section 376
//LongBack (LongBack) package { import flash.display.*; public dynamic class LongBack extends MovieClip { } }//package
Section 377
//LongShootArrow (LongShootArrow) package { import flash.display.*; public dynamic class LongShootArrow extends MovieClip { } }//package
Section 378
//lose_sound (lose_sound) package { import flash.media.*; public dynamic class lose_sound extends Sound { } }//package
Section 379
//LoseStateView (LoseStateView) package { import flash.display.*; public dynamic class LoseStateView extends MovieClip { public var m_window:MovieClip; public var m_buttonSkip:SimpleButton; public var m_buttonMenu:SimpleButton; public var m_buttonRestart:SimpleButton; public var m_buttonChangeDifficulty:SimpleButton; public var m_buttonUnenabled:UnenabledSkip; public var m_buttonMoreGames:SimpleButton; } }//package
Section 380
//main_menu_arrow_sound (main_menu_arrow_sound) package { import flash.media.*; public dynamic class main_menu_arrow_sound extends Sound { } }//package
Section 381
//main_theme (main_theme) package { import flash.media.*; public dynamic class main_theme extends Sound { } }//package
Section 382
//MainMenuCloud1 (MainMenuCloud1) package { import flash.display.*; public dynamic class MainMenuCloud1 extends MovieClip { } }//package
Section 383
//MainMenuCloud2 (MainMenuCloud2) package { import flash.display.*; public dynamic class MainMenuCloud2 extends MovieClip { } }//package
Section 384
//MainMenuCloud3 (MainMenuCloud3) package { import flash.display.*; public dynamic class MainMenuCloud3 extends MovieClip { } }//package
Section 385
//MainMenuStateView (MainMenuStateView) package { import flash.display.*; public dynamic class MainMenuStateView extends MovieClip { public var m_vulture:MovieClip; public var m_notdoppler:SimpleButton; public var m_leftButtonsPanel:MovieClip; public var m_II:MovieClip; public var m_comixCloud:MainMenuCloud1; public var m_rightButtonsPanel:MovieClip; } }//package
Section 386
//Mill (Mill) package { import flash.display.*; public dynamic class Mill extends MovieClip { } }//package
Section 387
//MillFan (MillFan) package { import flash.display.*; public dynamic class MillFan extends MovieClip { } }//package
Section 388
//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 389
//moo (moo) package { import flash.media.*; public dynamic class moo extends Sound { } }//package
Section 390
//MoreGamesPanel (MoreGamesPanel) package { import flash.events.*; import Main.*; import flash.display.*; import States.*; public class MoreGamesPanel extends MovieClip { private var m_isNeedPause:Boolean; public var m_moreGames:SimpleButton; public var m_walkthrough:SimpleButton; public var m_walkthrough2:MovieClip; private var m_liveTime:Number;// = 0 private var m_isSecond:Boolean; public function MoreGamesPanel(_arg1:Boolean=false, _arg2:Boolean=false){ m_isSecond = _arg2; m_isNeedPause = _arg1; m_moreGames.addEventListener(MouseEvent.CLICK, onMoreGamesClick); m_walkthrough.addEventListener(MouseEvent.CLICK, onWalkthroughClick); m_walkthrough2.addEventListener(MouseEvent.CLICK, onWalkthroughClick); addEventListener(Event.REMOVED_FROM_STAGE, onRemoveFromStage); m_walkthrough2.buttonMode = true; if (_arg2){ m_walkthrough.visible = false; m_walkthrough.enabled = false; } else { m_walkthrough2.visible = false; m_walkthrough2.enabled = false; }; addEventListener(Event.ENTER_FRAME, update); } public function hideWalkthroughSigh():void{ m_walkthrough.visible = false; } private function update(_arg1:Event):void{ m_liveTime = (m_liveTime + (1 / 30)); if (m_isSecond){ }; } private function onMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.DOWN_PANEL_MORE_GAMES); if (m_isNeedPause){ StateManager.getInstance().pushState(new GamePausedState()); }; } private function onWalkthroughClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.WALKROUTGH_URL, LinksManager.DOWN_PANEL_WALKTHROUGH); if (m_isNeedPause){ StateManager.getInstance().pushState(new GamePausedState()); }; } private function onRemoveFromStage(_arg1:Event):void{ m_moreGames.removeEventListener(MouseEvent.CLICK, onMoreGamesClick); m_walkthrough.removeEventListener(MouseEvent.CLICK, onWalkthroughClick); m_walkthrough2.removeEventListener(MouseEvent.CLICK, onWalkthroughClick); removeEventListener(Event.REMOVED_FROM_STAGE, onRemoveFromStage); removeEventListener(Event.ENTER_FRAME, update); } } }//package
Section 391
//MusicCloud (MusicCloud) package { import flash.display.*; public dynamic class MusicCloud extends MovieClip { } }//package
Section 392
//OptionsStateView (OptionsStateView) package { import flash.display.*; public dynamic class OptionsStateView extends MovieClip { public var m_musicVolume:ScrollBar; public var m_invertControl:CheckBox; public var m_hideTips:CheckBox; public var m_soundVolume:ScrollBar; public var m_buttonReset:SimpleButton; public var m_buttonOk:SimpleButton; public var m_disableBlood:CheckBox; } }//package
Section 393
//OutShader (OutShader) package { import flash.display.*; public class OutShader extends MovieClip { private var m_blackSquare:MovieClip; private var m_liveTime:Number;// = 0 private var m_maxShadeTime:Number; private var m_maxShade:Number; 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 restart():void{ m_liveTime = 0; m_blackSquare.alpha = m_maxShade; } 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); } } }//package
Section 394
//OvercastSky (OvercastSky) package { import flash.display.*; public dynamic class OvercastSky extends MovieClip { } }//package
Section 395
//perfect_star (perfect_star) package { import flash.media.*; public dynamic class perfect_star extends Sound { } }//package
Section 396
//PhraseCloud0 (PhraseCloud0) package { import flash.display.*; public dynamic class PhraseCloud0 extends MovieClip { } }//package
Section 397
//PhraseCloud1 (PhraseCloud1) package { import flash.display.*; public dynamic class PhraseCloud1 extends MovieClip { } }//package
Section 398
//PhraseCloud10 (PhraseCloud10) package { import flash.display.*; public dynamic class PhraseCloud10 extends MovieClip { } }//package
Section 399
//PhraseCloud11 (PhraseCloud11) package { import flash.display.*; public dynamic class PhraseCloud11 extends MovieClip { } }//package
Section 400
//PhraseCloud2 (PhraseCloud2) package { import flash.display.*; public dynamic class PhraseCloud2 extends MovieClip { } }//package
Section 401
//PhraseCloud3 (PhraseCloud3) package { import flash.display.*; public dynamic class PhraseCloud3 extends MovieClip { } }//package
Section 402
//PhraseCloud4 (PhraseCloud4) package { import flash.display.*; public dynamic class PhraseCloud4 extends MovieClip { } }//package
Section 403
//PhraseCloud5 (PhraseCloud5) package { import flash.display.*; public dynamic class PhraseCloud5 extends MovieClip { } }//package
Section 404
//PhraseCloud6 (PhraseCloud6) package { import flash.display.*; public dynamic class PhraseCloud6 extends MovieClip { } }//package
Section 405
//PhraseCloud7 (PhraseCloud7) package { import flash.display.*; public dynamic class PhraseCloud7 extends MovieClip { } }//package
Section 406
//PhraseCloud8 (PhraseCloud8) package { import flash.display.*; public dynamic class PhraseCloud8 extends MovieClip { } }//package
Section 407
//PhraseCloud9 (PhraseCloud9) package { import flash.display.*; public dynamic class PhraseCloud9 extends MovieClip { } }//package
Section 408
//PlayStateView (PlayStateView) package { import flash.display.*; public dynamic class PlayStateView extends MovieClip { public var m_levelClip:MovieClip; public var m_buttonMenu:SimpleButton; public var m_arrowsLeftClip:MovieClip; public var m_buttonReplay:SimpleButton; public var m_scoreClip:MovieClip; } }//package
Section 409
//points (points) package { import flash.media.*; public dynamic class points extends Sound { } }//package
Section 410
//PointsGhost1000 (PointsGhost1000) package { import States.PlayState.*; public dynamic class PointsGhost1000 extends PointsGhost { } }//package
Section 411
//PointsGhost300 (PointsGhost300) package { import States.PlayState.*; public dynamic class PointsGhost300 extends PointsGhost { } }//package
Section 412
//PointsGhost500 (PointsGhost500) package { import States.PlayState.*; public dynamic class PointsGhost500 extends PointsGhost { } }//package
Section 413
//ProgrammingCloud (ProgrammingCloud) package { import flash.display.*; public dynamic class ProgrammingCloud extends MovieClip { } }//package
Section 414
//RightEdgeMarker (RightEdgeMarker) package { import flash.display.*; public dynamic class RightEdgeMarker extends MovieClip { } }//package
Section 415
//RightLowerHand_1 (RightLowerHand_1) package { import flash.display.*; public dynamic class RightLowerHand_1 extends MovieClip { } }//package
Section 416
//RightLowerHand_2 (RightLowerHand_2) package { import flash.display.*; public dynamic class RightLowerHand_2 extends MovieClip { } }//package
Section 417
//RightLowerHand_3 (RightLowerHand_3) package { import flash.display.*; public dynamic class RightLowerHand_3 extends MovieClip { } }//package
Section 418
//RightLowerHand_4 (RightLowerHand_4) package { import flash.display.*; public dynamic class RightLowerHand_4 extends MovieClip { } }//package
Section 419
//RightLowerLeg_1 (RightLowerLeg_1) package { import flash.display.*; public dynamic class RightLowerLeg_1 extends MovieClip { } }//package
Section 420
//RightLowerLeg_2 (RightLowerLeg_2) package { import flash.display.*; public dynamic class RightLowerLeg_2 extends MovieClip { } }//package
Section 421
//RightLowerLeg_3 (RightLowerLeg_3) package { import flash.display.*; public dynamic class RightLowerLeg_3 extends MovieClip { } }//package
Section 422
//RightLowerLeg_4 (RightLowerLeg_4) package { import flash.display.*; public dynamic class RightLowerLeg_4 extends MovieClip { } }//package
Section 423
//RightUpperHand_1 (RightUpperHand_1) package { import flash.display.*; public dynamic class RightUpperHand_1 extends MovieClip { } }//package
Section 424
//RightUpperHand_2 (RightUpperHand_2) package { import flash.display.*; public dynamic class RightUpperHand_2 extends MovieClip { } }//package
Section 425
//RightUpperHand_3 (RightUpperHand_3) package { import flash.display.*; public dynamic class RightUpperHand_3 extends MovieClip { } }//package
Section 426
//RightUpperHand_4 (RightUpperHand_4) package { import flash.display.*; public dynamic class RightUpperHand_4 extends MovieClip { } }//package
Section 427
//RightUpperLeg_1 (RightUpperLeg_1) package { import flash.display.*; public dynamic class RightUpperLeg_1 extends MovieClip { } }//package
Section 428
//RightUpperLeg_2 (RightUpperLeg_2) package { import flash.display.*; public dynamic class RightUpperLeg_2 extends MovieClip { } }//package
Section 429
//RightUpperLeg_3 (RightUpperLeg_3) package { import flash.display.*; public dynamic class RightUpperLeg_3 extends MovieClip { } }//package
Section 430
//RightUpperLeg_4 (RightUpperLeg_4) package { import flash.display.*; public dynamic class RightUpperLeg_4 extends MovieClip { } }//package
Section 431
//Rope (Rope) package { import flash.display.*; public dynamic class Rope extends MovieClip { } }//package
Section 432
//RopeRings (RopeRings) package { import States.PlayState.*; public dynamic class RopeRings extends Frontground { } }//package
Section 433
//Screw (Screw) package { import States.PlayState.*; public dynamic class Screw extends Frontground { } }//package
Section 434
//ScrollBar (ScrollBar) package { import flash.events.*; import flash.display.*; public class ScrollBar extends MovieClip { private var m_isMouseDown:Boolean;// = false public var m_slider:MovieClip; private var m_progress:Number; private var m_maxWidth: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); } 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); } 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 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 435
//SelectDifficultyStateView (SelectDifficultyStateView) package { import flash.display.*; public dynamic class SelectDifficultyStateView extends MovieClip { public var m_hardText:MovieClip; public var m_checkBoxHard:CheckBox; public var m_normalText:MovieClip; public var m_checkBoxEasy:CheckBox; public var m_buttonOk:SimpleButton; public var m_checkBoxNormal:CheckBox; public var m_easyText:MovieClip; } }//package
Section 436
//SelectLevelBonusButton (SelectLevelBonusButton) package { import States.*; public dynamic class SelectLevelBonusButton extends SelectLevelButton { } }//package
Section 437
//SelectLevelButton (SelectLevelButton) package { import States.*; public dynamic class SelectLevelButton extends SelectLevelButton { } }//package
Section 438
//SelectLevelStateView (SelectLevelStateView) package { import flash.display.*; import flash.text.*; public dynamic class SelectLevelStateView extends MovieClip { public var m_difficultyCaption:SimpleButton; public var m_difficulty:TextField; public var m_buttonMenu:SimpleButton; public var m_buttonAchievements:SimpleButton; public var m_arrowUp:GuiArrow; public var m_totalScore:MovieClip; public var m_page:TextField; public var m_buttonsPanel:MovieClip; public var m_arrowRight:GuiArrow; public var m_buttonSubmit:SimpleButton; } }//package
Section 439
//SelectSecretLevelStateView (SelectSecretLevelStateView) package { import flash.display.*; import flash.text.*; public dynamic class SelectSecretLevelStateView extends MovieClip { public var m_level51:SelectLevelButton; public var m_level52:SelectLevelButton; public var m_level53:SelectLevelBonusButton; public var m_difficultyCaption:SimpleButton; public var m_difficulty:TextField; public var m_adBox:MovieClip; public var m_arrowDown:GuiArrow; public var m_buttonMenu:SimpleButton; public var m_buttonAchievements:SimpleButton; public var m_level48:SelectLevelButton; public var m_closeButton:CloseCross; public var m_level49:SelectLevelButton; public var m_totalScore:MovieClip; public var m_level50:SelectLevelButton; public var m_buttonSubmit:SimpleButton; } }//package
Section 440
//Shader (Shader) package { import flash.display.*; public class Shader extends MovieClip { private var m_startShade:Number; private var m_endShade:Number; private var m_liveTime:Number;// = 0 private var m_startTime:Number; private var m_endTime:Number; private var m_clip:black_square; 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 441
//Sight (Sight) package { import flash.display.*; public dynamic class Sight extends MovieClip { } }//package
Section 442
//Soul1 (Soul1) package { import States.PlayState.*; public dynamic class Soul1 extends Soul { } }//package
Section 443
//Soul2 (Soul2) package { import States.PlayState.*; public dynamic class Soul2 extends Soul { } }//package
Section 444
//Soul3 (Soul3) package { import States.PlayState.*; public dynamic class Soul3 extends Soul { } }//package
Section 445
//Soul4 (Soul4) package { import States.PlayState.*; public dynamic class Soul4 extends Soul { } }//package
Section 446
//SoundButton (SoundButton) package { import flash.events.*; import flash.display.*; public class SoundButton extends MovieClip { private var m_sound:DisplayObject;// = null private var m_isSoundOn:Boolean;// = false 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 447
//SoundConst (SoundConst) package { public class SoundConst { public static const CLICK:String = "click"; public static const AMBIENT_1:String = "ambient_1"; public static const AMBIENT_2:String = "ambient_22"; public static const MAIN_MENU_MUSIC:String = "main_theme"; public static const STICK_IN_MAIN_MENU:String = "main_menu_arrow_sound"; public static const STICK_IN_WOOD:String = "stick_in_wood"; 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 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 BOW_SHOOT:String = "bow_shoot"; 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 ARROW_GHOST:String = "arrow_ghost"; public static const DEATH_CRY:String = "death_cry"; public static const SUN_VOICE:String = "sun_voice"; 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_3:String = "cry_3"; public static const CRY_4:String = "cry_4"; public static const CRY_5:String = "cry_5"; public static const CRY_6:String = "cry_6"; public static const CRY_7:String = "cry_7"; 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 VULTURE_CRY_4:String = "vulture_cry_4"; public static const PERFECT_STAR:String = "perfect_star"; public static const MOO:String = "moo"; public static const WIN:String = "win_sound"; public static const LOSE:String = "lose_sound"; public static const EXPLOISON:String = "exploison"; public static const TELEPORT:String = "teleport"; public static const POINTS:String = "points"; } }//package
Section 448
//SoundManager (SoundManager) package { import flash.media.*; import flash.system.*; public class SoundManager { private static const vtFadeOut:int = 0; private static const vtFadeIn:int = 1; private static const vtNormal:int = 2; private static var m_isSoundEnable:Boolean = true; private static var m_currentLoop:SoundChannel; private static var m_currentLoopName:String; private static var m_soundVolume:Number = 1; private static var m_musicVolume:Number = 0.55; private static var m_liveTime:Number; private static var m_volumeType:int = 2; private static var m_soundAfterFade:String; private static var m_musicVolumeBackup:Number; public static function setSoundVolume(_arg1:Number):void{ m_soundVolume = _arg1; } public static function getMusicVolume():Number{ return (m_musicVolume); } 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 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):SoundChannel{ 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; return (channel); } catch(e:Error) { if (Constant.m_debugMode){ trace(e); }; }; }; return (null); } 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 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); }; }; } 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 playFadeOut(_arg1:String):void{ m_musicVolumeBackup = m_musicVolume; m_volumeType = vtFadeOut; m_soundAfterFade = _arg1; } } }//package
Section 449
//SoundOff (SoundOff) package { import flash.display.*; public dynamic class SoundOff extends SimpleButton { } }//package
Section 450
//SoundOn (SoundOn) package { import flash.display.*; public dynamic class SoundOn extends SimpleButton { } }//package
Section 451
//SponsorIntro (SponsorIntro) package { import flash.display.*; public dynamic class SponsorIntro extends MovieClip { } }//package
Section 452
//SponsorMusic (SponsorMusic) package { import flash.media.*; public dynamic class SponsorMusic extends Sound { } }//package
Section 453
//StarrySky (StarrySky) package { import flash.display.*; public dynamic class StarrySky extends MovieClip { } }//package
Section 454
//stick_in_body_0 (stick_in_body_0) package { import flash.media.*; public dynamic class stick_in_body_0 extends Sound { } }//package
Section 455
//stick_in_body_1 (stick_in_body_1) package { import flash.media.*; public dynamic class stick_in_body_1 extends Sound { } }//package
Section 456
//stick_in_body_2 (stick_in_body_2) package { import flash.media.*; public dynamic class stick_in_body_2 extends Sound { } }//package
Section 457
//stick_in_wood (stick_in_wood) package { import flash.media.*; public dynamic class stick_in_wood extends Sound { } }//package
Section 458
//Stone0 (Stone0) package { import States.PlayState.*; public dynamic class Stone0 extends StaticBoxIsStone { } }//package
Section 459
//Stone1 (Stone1) package { import States.PlayState.*; public dynamic class Stone1 extends StaticBoxIsStone { } }//package
Section 460
//Stone2 (Stone2) package { import States.PlayState.*; public dynamic class Stone2 extends StaticBoxIsStone { } }//package
Section 461
//Stone3 (Stone3) package { import States.PlayState.*; public dynamic class Stone3 extends StaticBoxIsStone { } }//package
Section 462
//sun_voice (sun_voice) package { import flash.media.*; public dynamic class sun_voice extends Sound { } }//package
Section 463
//tape_rope_0 (tape_rope_0) package { import flash.media.*; public dynamic class tape_rope_0 extends Sound { } }//package
Section 464
//tape_rope_1 (tape_rope_1) package { import flash.media.*; public dynamic class tape_rope_1 extends Sound { } }//package
Section 465
//tape_rope_2 (tape_rope_2) package { import flash.media.*; public dynamic class tape_rope_2 extends Sound { } }//package
Section 466
//teleport (teleport) package { import flash.media.*; public dynamic class teleport extends Sound { } }//package
Section 467
//TeleportBack (TeleportBack) package { import flash.display.*; public dynamic class TeleportBack extends MovieClip { } }//package
Section 468
//TeleportHint (TeleportHint) package { import States.PlayState.*; public dynamic class TeleportHint extends HintText { } }//package
Section 469
//TheAmountOfArrows (TheAmountOfArrows) package { import States.PlayState.*; public dynamic class TheAmountOfArrows extends HintText { } }//package
Section 470
//ThisIsBonusHint (ThisIsBonusHint) package { import States.PlayState.*; public dynamic class ThisIsBonusHint extends HintText { } }//package
Section 471
//ThisIsHedhehogHint (ThisIsHedhehogHint) package { import States.PlayState.*; public dynamic class ThisIsHedhehogHint extends HintText { } }//package
Section 472
//ThisIsSingleHedhehogHint (ThisIsSingleHedhehogHint) package { import States.PlayState.*; public dynamic class ThisIsSingleHedhehogHint extends HintText { } }//package
Section 473
//ThisIsTNTHint (ThisIsTNTHint) package { import States.PlayState.*; public dynamic class ThisIsTNTHint extends HintText { } }//package
Section 474
//TimeIsOutEffect (TimeIsOutEffect) package { import States.PlayState.*; public dynamic class TimeIsOutEffect extends OutOfArrowsEffect { } }//package
Section 475
//ToPullBowHint (ToPullBowHint) package { import States.PlayState.*; public dynamic class ToPullBowHint extends HintText { } }//package
Section 476
//Torso1_1 (Torso1_1) package { import flash.display.*; public dynamic class Torso1_1 extends MovieClip { } }//package
Section 477
//Torso1_2 (Torso1_2) package { import flash.display.*; public dynamic class Torso1_2 extends MovieClip { } }//package
Section 478
//Torso1_3 (Torso1_3) package { import flash.display.*; public dynamic class Torso1_3 extends MovieClip { } }//package
Section 479
//Torso1_4 (Torso1_4) package { import flash.display.*; public dynamic class Torso1_4 extends MovieClip { } }//package
Section 480
//Torso2_1 (Torso2_1) package { import flash.display.*; public dynamic class Torso2_1 extends MovieClip { } }//package
Section 481
//Torso2_2 (Torso2_2) package { import flash.display.*; public dynamic class Torso2_2 extends MovieClip { } }//package
Section 482
//Torso2_3 (Torso2_3) package { import flash.display.*; public dynamic class Torso2_3 extends MovieClip { } }//package
Section 483
//Torso2_4 (Torso2_4) package { import flash.display.*; public dynamic class Torso2_4 extends MovieClip { } }//package
Section 484
//Torso3_1 (Torso3_1) package { import flash.display.*; public dynamic class Torso3_1 extends MovieClip { } }//package
Section 485
//Torso3_2 (Torso3_2) package { import flash.display.*; public dynamic class Torso3_2 extends MovieClip { } }//package
Section 486
//Torso3_3 (Torso3_3) package { import flash.display.*; public dynamic class Torso3_3 extends MovieClip { } }//package
Section 487
//Torso3_4 (Torso3_4) package { import flash.display.*; public dynamic class Torso3_4 extends MovieClip { } }//package
Section 488
//tree_1 (tree_1) package { import flash.display.*; public dynamic class tree_1 extends MovieClip { } }//package
Section 489
//tree_10 (tree_10) package { import flash.display.*; public dynamic class tree_10 extends MovieClip { } }//package
Section 490
//tree_2 (tree_2) package { import flash.display.*; public dynamic class tree_2 extends MovieClip { } }//package
Section 491
//tree_3 (tree_3) package { import flash.display.*; public dynamic class tree_3 extends MovieClip { } }//package
Section 492
//tree_4 (tree_4) package { import flash.display.*; public dynamic class tree_4 extends MovieClip { } }//package
Section 493
//tree_5 (tree_5) package { import flash.display.*; public dynamic class tree_5 extends MovieClip { } }//package
Section 494
//tree_6 (tree_6) package { import flash.display.*; public dynamic class tree_6 extends MovieClip { } }//package
Section 495
//tree_7 (tree_7) package { import flash.display.*; public dynamic class tree_7 extends MovieClip { } }//package
Section 496
//tree_8 (tree_8) package { import flash.display.*; public dynamic class tree_8 extends MovieClip { } }//package
Section 497
//tree_9 (tree_9) package { import flash.display.*; public dynamic class tree_9 extends MovieClip { } }//package
Section 498
//TripleSave (TripleSave) package { import flash.display.*; public dynamic class TripleSave extends MovieClip { } }//package
Section 499
//TryToAimHint (TryToAimHint) package { import States.PlayState.*; public dynamic class TryToAimHint extends HintText { } }//package
Section 500
//UnenabledSkip (UnenabledSkip) package { public dynamic class UnenabledSkip extends Achievement { } }//package
Section 501
//UrlLockedStateView (UrlLockedStateView) package { import flash.display.*; import flash.text.*; public dynamic class UrlLockedStateView extends MovieClip { public var m_notDoppler:TextField; } }//package
Section 502
//win_sound (win_sound) package { import flash.media.*; public dynamic class win_sound extends Sound { } }//package
Section 503
//WinStateView (WinStateView) package { import flash.display.*; import flash.text.*; public dynamic class WinStateView extends MovieClip { public var m_star:MovieClip; public var m_bestScore:MovieClip; public var m_arrowsUsed:MovieClip; public var m_buttonNewAchievement:SimpleButton; public var m_buttonMenu:SimpleButton; public var m_buttonMoreGames:SimpleButton; public var m_currentScore:MovieClip; public var m_levelNum:TextField; public var m_buttonNext:SimpleButton; } }//package
Section 504
//vulture_cry_1 (vulture_cry_1) package { import flash.media.*; public dynamic class vulture_cry_1 extends Sound { } }//package
Section 505
//vulture_cry_2 (vulture_cry_2) package { import flash.media.*; public dynamic class vulture_cry_2 extends Sound { } }//package
Section 506
//vulture_cry_3 (vulture_cry_3) package { import flash.media.*; public dynamic class vulture_cry_3 extends Sound { } }//package
Section 507
//vulture_cry_4 (vulture_cry_4) package { import flash.media.*; public dynamic class vulture_cry_4 extends Sound { } }//package
Section 508
//VultureBend (VultureBend) package { import flash.display.*; public dynamic class VultureBend extends MovieClip { public var clip:MovieClip; } }//package
Section 509
//VultureDie (VultureDie) package { import flash.display.*; public dynamic class VultureDie extends MovieClip { public var clip:MovieClip; } }//package
Section 510
//VultureHere (VultureHere) package { import flash.display.*; public dynamic class VultureHere extends MovieClip { public var clip:MovieClip; } }//package
Section 511
//VultureJump (VultureJump) package { import flash.display.*; public dynamic class VultureJump extends MovieClip { public var clip:MovieClip; } }//package
Section 512
//YesNoStateView (YesNoStateView) package { import flash.display.*; public dynamic class YesNoStateView extends MovieClip { public var m_buttonYes:SimpleButton; public var m_buttonNo:SimpleButton; } }//package
Section 513
//YouWillGetAStar (YouWillGetAStar) package { import States.PlayState.*; public dynamic class YouWillGetAStar extends HintText { } }//package
Section 514
//блик_1 (блик_1) package { public dynamic class блик_1 extends AsyncClip { } }//package
Section 515
//блик_10 (блик_10) package { public dynamic class блик_10 extends AsyncClip { } }//package
Section 516
//блик_11 (блик_11) package { public dynamic class блик_11 extends AsyncClip { } }//package
Section 517
//блик_12 (блик_12) package { public dynamic class блик_12 extends AsyncClip { } }//package
Section 518
//блик_13 (блик_13) package { public dynamic class блик_13 extends AsyncClip { } }//package
Section 519
//блик_14 (блик_14) package { public dynamic class блик_14 extends AsyncClip { } }//package
Section 520
//блик_15 (блик_15) package { public dynamic class блик_15 extends AsyncClip { } }//package
Section 521
//блик_2 (блик_2) package { public dynamic class блик_2 extends AsyncClip { } }//package
Section 522
//блик_3 (блик_3) package { public dynamic class блик_3 extends AsyncClip { } }//package
Section 523
//блик_4 (блик_4) package { public dynamic class блик_4 extends AsyncClip { } }//package
Section 524
//блик_5 (блик_5) package { public dynamic class блик_5 extends AsyncClip { } }//package
Section 525
//блик_6 (блик_6) package { public dynamic class блик_6 extends AsyncClip { } }//package
Section 526
//блик_7 (блик_7) package { public dynamic class блик_7 extends AsyncClip { } }//package
Section 527
//блик_8 (блик_8) package { public dynamic class блик_8 extends AsyncClip { } }//package
Section 528
//блик_9 (блик_9) package { public dynamic class блик_9 extends AsyncClip { } }//package
Section 529
//звёздочка (звёздочка) package { public dynamic class звёздочка extends AsyncClip { } }//package

Library Items

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

Instance Names

"m_preloaderClip"Frame 1Symbol 162 MovieClip {States.CurrentPreloaderState}
"hsloader"Frame 1Symbol 166 MovieClip {gibbets2_level_pack_final_fla.highscoreloader_63}
"m_text"Symbol 19 MovieClip Frame 1Symbol 18 EditableText
"m_bar"Symbol 20 MovieClip Frame 1Symbol 16 MovieClip
"m_textClip"Symbol 20 MovieClip Frame 1Symbol 19 MovieClip
"m_loadingBar"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 20 MovieClip
"m_playButton"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 27 Button
"m_gibbetFront"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 62 MovieClip
"m_adBox"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 64 MovieClip
"m_closeButton"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 68 Button {CloseCross}
"m_buttonGibbets2"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 80 Button
"m_buttonGibbets1"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 86 Button
"m_notdoppler"Symbol 162 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 159 Button
"m_checkBox"Symbol 215 MovieClip {HideTipsPanel} Frame 1Symbol 214 MovieClip {CheckBox}
"m_buttonYes"Symbol 239 MovieClip {YesNoStateView} Frame 1Symbol 232 Button
"m_buttonNo"Symbol 239 MovieClip {YesNoStateView} Frame 1Symbol 236 Button
"m_tmpClip"Symbol 253 MovieClip Frame 1Symbol 251 MovieClip
"m_text"Symbol 277 MovieClip Frame 1Symbol 276 EditableText
"m_text"Symbol 279 MovieClip Frame 1Symbol 278 EditableText
"m_text"Symbol 281 MovieClip Frame 1Symbol 280 EditableText
"m_perfectSign"Symbol 290 MovieClip Frame 1Symbol 289 MovieClip
"m_buttonMenu"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 259 Button
"m_buttonNext"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 263 Button
"m_buttonMoreGames"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 269 Button
"m_arrowsUsed"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 277 MovieClip
"m_currentScore"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 279 MovieClip
"m_bestScore"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 281 MovieClip
"m_levelNum"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 284 EditableText
"m_star"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 290 MovieClip
"m_buttonNewAchievement"Symbol 304 MovieClip {WinStateView} Frame 1Symbol 303 Button
"m_notDoppler"Symbol 308 MovieClip {UrlLockedStateView} Frame 1Symbol 307 EditableText
"m_text"Symbol 352 MovieClip Frame 1Symbol 349 EditableText
"m_up"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 366 MovieClip
"m_textUp"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 367 EditableText
"m_starUp"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 370 MovieClip
"m_signUp"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 372 MovieClip
"m_over"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 373 MovieClip
"m_textOver"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 374 EditableText
"m_starOver"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 370 MovieClip
"m_signOver"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 372 MovieClip
"m_down"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 376 MovieClip
"m_textDown"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 377 EditableText
"m_starDown"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 370 MovieClip
"m_signDown"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 372 MovieClip
"m_unenable"Symbol 381 MovieClip {SelectLevelButton} Frame 1Symbol 380 MovieClip
"m_up"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 409 MovieClip
"m_textUp"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 410 EditableText
"m_starUp"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 370 MovieClip
"m_signUp"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 372 MovieClip
"m_over"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 411 MovieClip
"m_textOver"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 412 EditableText
"m_starOver"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 370 MovieClip
"m_signOver"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 372 MovieClip
"m_down"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 414 MovieClip
"m_starDown"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 370 MovieClip
"m_textDown"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 415 EditableText
"m_signDown"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 372 MovieClip
"m_unenable"Symbol 417 MovieClip {SelectLevelBonusButton} Frame 1Symbol 416 MovieClip
"m_totalScore"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 352 MovieClip
"m_buttonSubmit"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 357 Button
"m_buttonMenu"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 361 Button
"m_level48"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level49"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level50"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level51"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level52"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_arrowDown"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 390 Button {GuiArrow}
"m_buttonAchievements"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 402 Button
"m_adBox"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 64 MovieClip
"m_closeButton"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 68 Button {CloseCross}
"m_difficultyCaption"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 405 Button
"m_difficulty"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 406 EditableText
"m_level53"Symbol 418 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 417 MovieClip {SelectLevelBonusButton}
"m_level0"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level1"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level5"Symbol 450 MovieClip Frame 1Symbol 417 MovieClip {SelectLevelBonusButton}
"m_level2"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level3"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level4"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level6"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level7"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level11"Symbol 450 MovieClip Frame 1Symbol 417 MovieClip {SelectLevelBonusButton}
"m_level8"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level9"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level10"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level12"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level13"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level17"Symbol 450 MovieClip Frame 1Symbol 417 MovieClip {SelectLevelBonusButton}
"m_level14"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level15"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level16"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level18"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level19"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level23"Symbol 450 MovieClip Frame 1Symbol 417 MovieClip {SelectLevelBonusButton}
"m_level20"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level21"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_level22"Symbol 450 MovieClip Frame 1Symbol 381 MovieClip {SelectLevelButton}
"m_moreGames"Symbol 474 MovieClip {MoreGamesPanel} Frame 1Symbol 456 Button
"m_walkthrough"Symbol 474 MovieClip {MoreGamesPanel} Frame 1Symbol 459 Button
"m_walkthrough2"Symbol 474 MovieClip {MoreGamesPanel} Frame 1Symbol 473 MovieClip {gibbets2_level_pack_final_fla.TVSet_435}
"m_totalScore"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 352 MovieClip
"m_buttonSubmit"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 357 Button
"m_buttonMenu"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 361 Button
"m_buttonsPanel"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 450 MovieClip
"m_arrowRight"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 390 Button {GuiArrow}
"m_arrowUp"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 390 Button {GuiArrow}
"m_buttonAchievements"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 402 Button
"m_page"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 451 EditableText
"m_difficultyCaption"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 405 Button
"m_difficulty"Symbol 475 MovieClip {SelectLevelStateView} Frame 1Symbol 452 EditableText
"m_buttonOk"Symbol 507 MovieClip {SelectDifficultyStateView} Frame 1Symbol 496 Button
"m_checkBoxEasy"Symbol 507 MovieClip {SelectDifficultyStateView} Frame 1Symbol 214 MovieClip {CheckBox}
"m_checkBoxNormal"Symbol 507 MovieClip {SelectDifficultyStateView} Frame 1Symbol 214 MovieClip {CheckBox}
"m_checkBoxHard"Symbol 507 MovieClip {SelectDifficultyStateView} Frame 1Symbol 214 MovieClip {CheckBox}
"m_hardText"Symbol 507 MovieClip {SelectDifficultyStateView} Frame 1Symbol 502 MovieClip
"m_normalText"Symbol 507 MovieClip {SelectDifficultyStateView} Frame 1Symbol 504 MovieClip
"m_easyText"Symbol 507 MovieClip {SelectDifficultyStateView} Frame 1Symbol 506 MovieClip
"m_text"Symbol 509 MovieClip Frame 1Symbol 508 EditableText
"m_text"Symbol 515 MovieClip Frame 1Symbol 514 EditableText
"m_text"Symbol 520 MovieClip Frame 1Symbol 519 EditableText
"m_buttonMenu"Symbol 528 MovieClip {PlayStateView} Frame 1Symbol 361 Button
"m_scoreClip"Symbol 528 MovieClip {PlayStateView} Frame 1Symbol 509 MovieClip
"m_levelClip"Symbol 528 MovieClip {PlayStateView} Frame 1Symbol 515 MovieClip
"m_arrowsLeftClip"Symbol 528 MovieClip {PlayStateView} Frame 1Symbol 520 MovieClip
"m_buttonReplay"Symbol 528 MovieClip {PlayStateView} Frame 1Symbol 527 Button
"m_slider"Symbol 535 MovieClip {ScrollBar} Frame 1Symbol 534 MovieClip
"m_buttonOk"Symbol 563 MovieClip {OptionsStateView} Frame 1Symbol 496 Button
"m_invertControl"Symbol 563 MovieClip {OptionsStateView} Frame 1Symbol 214 MovieClip {CheckBox}
"m_disableBlood"Symbol 563 MovieClip {OptionsStateView} Frame 1Symbol 214 MovieClip {CheckBox}
"m_soundVolume"Symbol 563 MovieClip {OptionsStateView} Frame 1Symbol 535 MovieClip {ScrollBar}
"m_musicVolume"Symbol 563 MovieClip {OptionsStateView} Frame 1Symbol 535 MovieClip {ScrollBar}
"m_hideTips"Symbol 563 MovieClip {OptionsStateView} Frame 1Symbol 214 MovieClip {CheckBox}
"m_buttonReset"Symbol 563 MovieClip {OptionsStateView} Frame 1Symbol 562 Button
"m_buttonPlay"Symbol 629 MovieClip {gibbets2_level_pack_final_fla.shirt_44_623} Frame 1Symbol 616 Button
"m_buttonOptions"Symbol 629 MovieClip {gibbets2_level_pack_final_fla.shirt_44_623} Frame 1Symbol 622 Button
"m_buttonCredits"Symbol 629 MovieClip {gibbets2_level_pack_final_fla.shirt_44_623} Frame 1Symbol 628 Button
"m_buttonGibbetsII"Symbol 650 MovieClip {gibbets2_level_pack_final_fla.LeftPanel_635} Frame 1Symbol 635 Button
"m_buttonGibbetsI"Symbol 650 MovieClip {gibbets2_level_pack_final_fla.LeftPanel_635} Frame 1Symbol 640 Button
"m_buttonMoreGames"Symbol 650 MovieClip {gibbets2_level_pack_final_fla.LeftPanel_635} Frame 1Symbol 644 Button
"m_buttonHighScores"Symbol 650 MovieClip {gibbets2_level_pack_final_fla.LeftPanel_635} Frame 1Symbol 649 Button
"m_vulture"Symbol 658 MovieClip {MainMenuStateView} Frame 1Symbol 600 MovieClip {gibbets2_level_pack_final_fla.shirt_39_614}
"m_II"Symbol 658 MovieClip {MainMenuStateView} Frame 1Symbol 615 MovieClip {gibbets2_level_pack_final_fla.shirt_42_621}
"m_rightButtonsPanel"Symbol 658 MovieClip {MainMenuStateView} Frame 1Symbol 629 MovieClip {gibbets2_level_pack_final_fla.shirt_44_623}
"m_leftButtonsPanel"Symbol 658 MovieClip {MainMenuStateView} Frame 1Symbol 650 MovieClip {gibbets2_level_pack_final_fla.LeftPanel_635}
"m_comixCloud"Symbol 658 MovieClip {MainMenuStateView} Frame 1Symbol 654 MovieClip {MainMenuCloud1}
"m_notdoppler"Symbol 658 MovieClip {MainMenuStateView} Frame 1Symbol 159 Button
"m_window"Symbol 689 MovieClip {LoseStateView} Frame 1Symbol 249 MovieClip
"m_buttonMenu"Symbol 689 MovieClip {LoseStateView} Frame 1Symbol 259 Button
"m_buttonRestart"Symbol 689 MovieClip {LoseStateView} Frame 1Symbol 670 Button
"m_buttonMoreGames"Symbol 689 MovieClip {LoseStateView} Frame 1Symbol 269 Button
"m_buttonSkip"Symbol 689 MovieClip {LoseStateView} Frame 1Symbol 684 Button
"m_buttonUnenabled"Symbol 689 MovieClip {LoseStateView} Frame 1Symbol 664 MovieClip {UnenabledSkip}
"m_buttonChangeDifficulty"Symbol 689 MovieClip {LoseStateView} Frame 1Symbol 688 Button
"m_buttonMenu"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 259 Button
"m_buttonNext"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 263 Button
"m_accuracy"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 277 MovieClip
"m_currentScore"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 279 MovieClip
"m_bestScore"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 281 MovieClip
"m_star"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 290 MovieClip
"m_buttonMoreGames"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 269 Button
"m_levelNum"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 697 EditableText
"m_buttonNewAchievement"Symbol 698 MovieClip {GrifShootingWinStateView} Frame 1Symbol 303 Button
"m_text"Symbol 700 MovieClip Frame 1Symbol 699 EditableText
"m_buttonMenu"Symbol 704 MovieClip {GrifShootingStateView} Frame 1Symbol 361 Button
"m_scoreClip"Symbol 704 MovieClip {GrifShootingStateView} Frame 1Symbol 509 MovieClip
"m_arrowsLeftClip"Symbol 704 MovieClip {GrifShootingStateView} Frame 1Symbol 520 MovieClip
"m_buttonSkip"Symbol 704 MovieClip {GrifShootingStateView} Frame 1Symbol 684 Button
"m_timeLeftClip"Symbol 704 MovieClip {GrifShootingStateView} Frame 1Symbol 700 MovieClip
"m_clickToContinue"Symbol 709 MovieClip {GamePausedStateView} Frame 1Symbol 708 MovieClip {ClickToContinue}
"m_gibbetFront"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 62 MovieClip
"m_totalScore"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 352 MovieClip
"m_buttonSubmit"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 357 Button
"m_buttonMenu"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 361 Button
"m_buttonMoreGames"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 269 Button
"m_notDoppler"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 159 Button
"m_buttonGibbets2"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 80 Button
"m_buttonGibbets1"Symbol 710 MovieClip {GameCompleteStateView} Frame 1Symbol 86 Button
"m_sky"Symbol 713 MovieClip Frame 1Symbol 4 MovieClip {Background}
"m_sky"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 713 MovieClip
"m_artHanger"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 726 MovieClip {HangerPoint}
"m_musicHanger"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 726 MovieClip {HangerPoint}
"m_programmingHanger"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 726 MovieClip {HangerPoint}
"m_buttonMenu"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 361 Button
"m_notdoppler"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 159 Button
"m_blogLink"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 763 Button
"m_mailLink"Symbol 770 MovieClip {CreditsStateView} Frame 1Symbol 769 Button
"m_text"Symbol 784 MovieClip {Hint} Frame 1Symbol 783 EditableText
"LEVEL_24_IN_5_SHOT"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 860 MovieClip {ach_1}
"LEVEL_44_IN_7_SHOT"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 857 MovieClip {ach_2}
"LEVELS_WITHOUT_LOSE"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 852 MovieClip {ach_3}
"LEVELS_WITHOUT_INJURE"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 849 MovieClip {ach_4}
"SAVES_50"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 844 MovieClip {ach_5}
"SAVES_100"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 837 MovieClip {ach_6}
"HOUR_PLAYED"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 832 MovieClip {ach_7}
"TWO_HOURS_PLAYED"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 829 MovieClip {ach_8}
"HALF_COMPLETED"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 824 MovieClip {ach_9}
"FULL_COMPLETED"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 821 MovieClip {ach_10}
"WITH_STAR_40"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 812 MovieClip {ach_11}
"GRIFS_KILLED"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 807 MovieClip {ach_12}
"ACCURACY_70"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 799 MovieClip {ach_13}
"CROWN"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 790 MovieClip {ach_15}
"m_buttonMenu"Symbol 879 MovieClip {AchievementsStateView} Frame 1Symbol 361 Button
"m_label"Symbol 927 MovieClip {States.PlayState.AddPointsEffect} Frame 1Symbol 926 EditableText
"m_text"Symbol 929 MovieClip {AddArrowClip} Frame 1Symbol 928 EditableText
"clip"Symbol 956 MovieClip {VultureJump} Frame 1Symbol 955 MovieClip
"clip"Symbol 976 MovieClip {VultureDie} Frame 1Symbol 975 MovieClip {gibbets2_level_pack_final_fla.vulture_copy3_401}
"clip"Symbol 978 MovieClip {VultureBend} Frame 1Symbol 977 MovieClip
"vertex6"Symbol 1036 MovieClip {InvertedCowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex2"Symbol 1036 MovieClip {InvertedCowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex1"Symbol 1036 MovieClip {InvertedCowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex3"Symbol 1036 MovieClip {InvertedCowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex4"Symbol 1036 MovieClip {InvertedCowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex5"Symbol 1036 MovieClip {InvertedCowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex0"Symbol 1036 MovieClip {InvertedCowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex0"Symbol 1037 MovieClip {CowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex4"Symbol 1037 MovieClip {CowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex5"Symbol 1037 MovieClip {CowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex3"Symbol 1037 MovieClip {CowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex2"Symbol 1037 MovieClip {CowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex1"Symbol 1037 MovieClip {CowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"vertex6"Symbol 1037 MovieClip {CowMaket} Frame 1Symbol 726 MovieClip {HangerPoint}
"m_wings"Symbol 1075 MovieClip {Soul4} Frame 1Symbol 1072 MovieClip
"m_wings"Symbol 1078 MovieClip {Soul3} Frame 1Symbol 1072 MovieClip
"m_wings"Symbol 1081 MovieClip {Soul2} Frame 1Symbol 1072 MovieClip
"m_wings"Symbol 1084 MovieClip {Soul1} Frame 1Symbol 1072 MovieClip
"m_rotatedPath"Symbol 1295 MovieClip {ArrowGhost1} Frame 1Symbol 1294 MovieClip
"ikNode_2"Symbol 1311 MovieClip {Level49} Frame 1Symbol 61 MovieClip {RopeRings}
"ikNode_2"Symbol 1311 MovieClip {Level49} Frame 1Symbol 61 MovieClip {RopeRings}
"ikNode_2"Symbol 1311 MovieClip {Level49} Frame 1Symbol 61 MovieClip {RopeRings}
"ikNode_2"Symbol 1311 MovieClip {Level49} Frame 1Symbol 61 MovieClip {RopeRings}
"ikNode_2"Symbol 1311 MovieClip {Level49} Frame 1Symbol 61 MovieClip {RopeRings}
"ikNode_2"Symbol 1311 MovieClip {Level49} Frame 1Symbol 61 MovieClip {RopeRings}
"m_sunCircle"Symbol 1406 MovieClip {States.PlayState.Sun} Frame 1Symbol 1388 MovieClip
"m_face"Symbol 1406 MovieClip {States.PlayState.Sun} Frame 1Symbol 1405 MovieClip
"m_ovalClip"Symbol 1414 MovieClip {ArrowGhost3} Frame 1Symbol 1410 MovieClip
"m_rotatedPath"Symbol 1414 MovieClip {ArrowGhost3} Frame 1Symbol 1413 MovieClip
"clip"Symbol 1424 MovieClip {VultureHere} Frame 1Symbol 955 MovieClip
"clip"Symbol 1505 MovieClip {InvertedVultureHere} Frame 1Symbol 955 MovieClip
"m_ovalClip"Symbol 1546 MovieClip {ArrowGhost4} Frame 1Symbol 1292 MovieClip
"m_rotatedPath"Symbol 1546 MovieClip {ArrowGhost4} Frame 1Symbol 1545 MovieClip
"ikNode_1"Symbol 1576 MovieClip {Level23} Frame 1Symbol 1362 MovieClip {GiantSky}
"m_field"Symbol 1674 MovieClip {BowClip} Frame 1Symbol 2 MovieClip {black_square}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 131 bytes "..$1$0H$POR.bOOSq3r99/YhJltKT0."

Labels

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




http://swfchan.com/19/91781/info.shtml
Created: 27/3 -2019 18:47:47 Last modified: 27/3 -2019 18:47:47 Server time: 11/05 -2024 14:19:57