/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 6 ĠJon athan ĠBe aud oin Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . x ena . plugin . utils Ċ Ċ import Ġorg . x ena . cs . Game Entity Ċ import Ġorg . x ena . cs . Me Ċ import Ġorg . x ena . cs . Player Ċ import Ġorg . x ena . cs . We apons Ċ import Ġorg . x ena . engine Module Ċ import Ġorg . x ena . offsets . offsets . Engine Offsets . dw Client State _ State Ċ import Ġorg . x ena . offsets . offsets . Engine Offsets . dw View Angles Ċ import Ġorg . x ena . plugin . Plugin Ċ import Ġorg . x ena . process Ċ import Ġjava . lang . Float . isNaN Ċ import Ġjava . util .* Ċ Ċ class ĠAngle Utils ( private Ġval Ġplugin : ĠPlugin , Ġprivate Ġval Ġsmoothing : ĠFloat , Ġprivate Ġval Ġlowest Pitch : ĠFloat , Ġprivate Ġval Ġhighest Pitch : ĠFloat , Ġprivate Ġval Ġlowest Y aw : ĠFloat , Ġprivate Ġval Ġhighest Y aw : ĠFloat ) Ġ{ ĊĉĊ ĉ fun Ġnormalize Angle ( vector : ĠVector ): ĠVector Ġ{ Ċĉ ĉ if Ġ( vector . x Ġ> Ġ 8 9 . 0 f Ġ&& Ġvector . x Ġ<= Ġ 1 8 0 . 0 f ) Ġ{ Ċĉĉ ĉ vector . x Ġ= Ġ 8 9 . 0 f Ċĉ ĉ } Ċĉ ĉ while Ġ( vector . x Ġ> Ġ 1 8 0 f ) Ġ{ Ċĉĉ ĉ vector . x Ġ-= Ġ 3 6 0 f Ċĉ ĉ } Ċĉ ĉ if Ġ( vector . x Ġ< Ġ- 8 9 . 0 f ) Ġ{ Ċĉĉ ĉ vector . x Ġ= Ġ- 8 9 . 0 f Ċĉ ĉ } Ċĉ ĉ while Ġ( vector . y Ġ> Ġ 1 8 0 f ) Ġ{ Ċĉĉ ĉ vector . y Ġ-= Ġ 3 6 0 f Ċĉ ĉ } Ċĉ ĉ while Ġ( vector . y Ġ< Ġ- 1 8 0 f ) Ġ{ Ċĉĉ ĉ vector . y Ġ+= Ġ 3 6 0 f Ċĉ ĉ } Ċĉ ĉ vector . z Ġ= Ġ 0 . 0 f Ċĉ ĉ return Ġvector Ċ ĉ } ĊĉĊ ĉ private Ġval Ġdelta Ġby Ġlazy Ġ{ ĠVector () Ġ} ĊĉĊ ĉ fun Ġcalculate Angle ( player : ĠPlayer , Ġdst : ĠVector , Ġangles : ĠVector ) Ġ= Ġcalculate Angle ( player , Ġplayer . view Origin , Ġdst , Ġangles ) ĊĉĊ ĉ fun Ġcalculate Angle ( player : ĠPlayer , Ġsrc : ĠVector , Ġdst : ĠVector , Ġangles : ĠVector ) Ġ{ Ċĉ ĉ val Ġpitch reduction Ġ= Ġrandom Float ( lowest Pitch , Ġhighest Pitch ) Ċĉ ĉ val Ġyaw reduction Ġ= Ġrandom Float ( lowest Y aw , Ġhighest Y aw ) Ċĉ ĉ delta . x Ġ= Ġsrc . x Ġ- Ġdst . x Ċĉ ĉ delta . y Ġ= Ġsrc . y Ġ- Ġdst . y Ċĉ ĉ delta . z Ġ= Ġsrc . z Ġ+ Ġplayer . view Offsets . z Ġ- Ġdst . z ĊĉĉĊĉ ĉ val Ġh yp Ġ= ĠMath . sqrt (( delta . x Ġ* Ġdelta . x Ġ+ Ġdelta . y Ġ* Ġdelta . y ). toDouble ()) Ċĉ ĉ angles . x Ġ= Ġ( Math . atan ( delta . z Ġ/ Ġh yp ) Ġ* Ġ( 1 8 0 Ġ/ ĠMath . PI ) Ġ- Ġplayer . p unch . x Ġ* Ġpitch reduction ). toFloat () Ċĉ ĉ angles . y Ġ= Ġ( Math . atan (( delta . y Ġ/ Ġdelta . x ). toDouble ()) Ġ* Ġ( 1 8 0 Ġ/ ĠMath . PI ) Ġ- Ġplayer . p unch . y Ġ* Ġyaw reduction ). toFloat () Ċĉ ĉ angles . z Ġ= Ġ 0 . 0 f Ċĉ ĉ if Ġ( delta . x Ġ>= Ġ 0 . 0 ) Ġ{ Ċĉĉ ĉ angles . y Ġ+= Ġ 1 8 0 . 0 f Ċĉ ĉ } Ċ ĉ } ĊĉĊ ĉ fun Ġcan Shoot ( me : ĠMe , Ġtarget : ĠGame Entity ): ĠBoolean Ġ{ Ċĉ ĉ val Ġweapon ID Ġ= Ġme . active Weapon . weapon ID . toInt () Ċĉ ĉ return Ġweapon ID Ġ!= ĠWe apons . KN IF E _ T . id Ġ&& Ġweapon ID Ġ!= ĠWe apons . KN IF E _ CT . id Ġ&& Ġme . active Weapon . clip 1 Ġ> Ġ 0 Ġ&& Ġ! target . is Dead Ġ&& Ġ! me . is Dead Ġ&& Ġtarget . team Ġ!= Ġme . team Ġ&& Ġtarget . is Spot ted Ġ&& Ġ! target . is D orm ant Ċ ĉ } ĊĉĊ ĉ private Ġval Ġs mo ot hed Angles Ġ= ĠVector () ĊĉĊ ĉ fun Ġset Angle Smooth ( dest : ĠVector , Ġorig : ĠVector ) Ġ{ Ċĉ ĉ smo ot hed Angles . x Ġ= Ġdest . x Ġ- Ġorig . x Ċĉ ĉ smo ot hed Angles . y Ġ= Ġdest . y Ġ- Ġorig . y Ċĉ ĉ smo ot hed Angles . z Ġ= Ġ 0 . 0 f Ċĉ ĉ normalize Angle ( smo ot hed Angles ) ĊĉĉĊĉ ĉ smo ot hed Angles . x Ġ= Ġorig . x Ġ+ Ġs mo ot hed Angles . x Ġ/ Ġ 1 0 0 . 0 f Ġ* Ġsmoothing Ċĉ ĉ smo ot hed Angles . y Ġ= Ġorig . y Ġ+ Ġs mo ot hed Angles . y Ġ/ Ġ 1 0 0 . 0 f Ġ* Ġsmoothing Ċĉ ĉ smo ot hed Angles . z Ġ= Ġ 0 . 0 f Ċĉ ĉ normalize Angle ( smo ot hed Angles ) ĊĉĉĊĉ ĉ set Angles ( smo ot hed Angles ) Ċ ĉ } ĊĉĊ ĉ fun Ġset Angles ( angles : ĠVector ) Ġ{ Ċĉ ĉ if Ġ( isNaN ( angles . x ) Ġ|| Ġis NaN ( angles . y ) Ġ|| Ġis NaN ( angles . z )) Ġ{ Ċĉĉ ĉ return Ċĉ ĉ } Ċĉ ĉ val Ġangle Pointer Ġ= Ġengine Module . read Unsigned Int ( dw Client State _ State . to Long ()) Ċĉ ĉ process . write Float ( angle Pointer Ġ+ Ġdw View Angles , Ġangles . x ) Ċĉ ĉ process . write Float ( angle Pointer Ġ+ Ġdw View Angles . to Long () Ġ+ Ġ 4 , Ġangles . y ) Ċ ĉ } ĊĉĊ ĉ fun Ġvelocity Comp ( me : ĠMe , Ġtarget : ĠPlayer , Ġenemy Pos : ĠVector ) Ġ{ Ċĉ ĉ enemy Pos . x Ġ+= Ġtarget . velocity . x Ġ/ Ġ 1 0 0 f Ġ* Ġ( 4 0 f Ġ/ Ġsmoothing ) Ċĉ ĉ enemy Pos . y Ġ+= Ġtarget . velocity . y Ġ/ Ġ 1 0 0 f Ġ* Ġ( 4 0 f Ġ/ Ġsmoothing ) Ċĉ ĉ enemy Pos . z Ġ+= Ġtarget . velocity . z Ġ/ Ġ 1 0 0 f Ġ* Ġ( 4 0 f Ġ/ Ġsmoothing ) ĊĉĉĊĉ ĉ enemy Pos . x Ġ-= Ġme . velocity . x Ġ/ Ġ 1 0 0 f Ġ* Ġ( 4 0 f Ġ/ Ġsmoothing ) Ċĉ ĉ enemy Pos . y Ġ-= Ġme . velocity . y Ġ/ Ġ 1 0 0 f Ġ* Ġ( 4 0 f Ġ/ Ġsmoothing ) Ċĉ ĉ enemy Pos . z Ġ-= Ġme . velocity . z Ġ/ Ġ 1 0 0 f Ġ* Ġ( 4 0 f Ġ/ Ġsmoothing ) Ċ ĉ } ĊĉĊ ĉ fun Ġdelta ( me : ĠVector , Ġthem : ĠVector ): ĠFloat Ġ{ Ċĉ ĉ var Ġdelta Ġ= Ġ 0 f Ċĉ ĉ delta Ġ+= ĠMath . abs ( me . x Ġ+ Ġjava . lang . Short . MAX _ VALUE Ġ- Ġ( them . x Ġ+ Ġjava . lang . Short . MAX _ VALUE )) Ċĉ ĉ delta Ġ+= ĠMath . abs ( me . y Ġ+ Ġjava . lang . Short . MAX _ VALUE Ġ- Ġ( them . y Ġ+ Ġjava . lang . Short . MAX _ VALUE )) Ċĉ ĉ return Ġdelta Ċ ĉ } ĊĉĊ ĉ private Ġval Ġrandom Ġ= ĠRandom () ĊĉĊ ĉ private Ġfun Ġrandom Float ( a : ĠFloat , Ġb : ĠFloat ): ĠFloat Ġ{ Ċĉ ĉ return Ġa Ġ+ Ġrandom . next Float () Ġ* Ġ( b Ġ- Ġa ) Ċ ĉ } Ċĉ Ċ } Ċ