package Ġg ay dar . struct . CMD Ċ Ċ import Ġg ay dar . de serializer . channel . Actor Channel . Companion . f iring Ċ import Ġg ay dar . struct . Actor Ċ import Ġg ay dar . struct . B unch Ċ import Ġg ay dar . struct . Net Guid Cache Object Ċ import Ġg ay dar . struct . Weapon Ċ import Ġg ay dar . util . debug ln Ċ import Ġg ay dar . util . tuple 2 Ċ Ċ object ĠWeapon CMD Ċ { ĊĠ Ġfun Ġprocess ( actor Ġ: ĠActor , Ġbunch Ġ: ĠB unch , Ġrep Obj Ġ: ĠNet Guid Cache Object ?, Ġwaiting Handle Ġ: ĠInt , Ġdata Ġ: ĠHashMap < String , ĠAny ?> ) Ġ: ĠBoolean ĊĠ Ġ{ ĊĠĠĠ Ġ// try ĊĠĠĠ Ġ//{ ĊĠĠĠĠĠ Ġactor Ġas ĠWeapon ĊĠĠĠĠĠ Ġwith ( b unch ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( waiting Handle ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// AT sl Weapon ĊĠĠĠĠĠĠĠĠĠĠ 1 6 ĠĠ Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġ{// T Array < class ĠU Class *> ĠAtt ached Item Classes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Size Ġ= Ġread UInt 1 6 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġequ ipped We apons Ġ= ĠInt Array ( array Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġread Int Packed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( net guid , Ġitem ) Ġ= Ġread Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequ ipped We apons [ index Ġ- Ġ 1 ] Ġ= Ġnet guid . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġ( net guid . isValid ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġprintln ("$ actor Ġhas Ġweapon Ġ Ġ[$ net guid ]( ${ we apons [ net guid . value ]?. Type }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġread Int Packed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ 1 7 ĠĠ Ġ-> Ġread Object () Ġ// My Pawn ĊĠĠĠĠĠĠĠĠĠĠ 1 8 ĠĠ Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġ{// struct ĠF Skin Data ĠSk inData Ġ| ĠSk in Target Datas ĠT Array < struct ĠF Skin Target Data > Ġ| Ġstruct ĠF Name ĠTarget Name , Ġclass ĠU Skin Data Config * ĠSk inData Config ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread UInt 1 6 () Ġ// array Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġread Int Packed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ(( index Ġ- Ġ 1 ) Ġ% Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġread Object () Ġ// Skin Data Config ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġread Name () Ġ// Target Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġread Int Packed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ// AT sl Weapon _ Gun ĊĠĠĠĠĠĠĠĠĠĠ 1 9 ĠĠ Ġ-> Ġactor . am mo Per Clip Ġ= Ġproperty Int () ĊĠĠĠĠĠĠĠĠĠĠ 2 0 ĠĠ Ġ-> Ġactor . is H ipped Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠĠĠĠ 2 1 ĠĠ Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠCurrent Ammo In Clip Ġ= Ġproperty Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Current Ammo In Clip Ġ< Ġactor . current Ammo In Clip ) Ġ// F iring ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactor . owner ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf iring . add ( tuple 2 ( this , ĠSystem . currentTimeMillis ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . current Ammo In Clip Ġ= ĠCurrent Ammo In Clip ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ 2 2 ĠĠ Ġ-> Ġactor . current Zero Level Ġ= Ġproperty Int () ĊĠĠĠĠĠĠĠĠĠĠ 2 3 ĠĠ Ġ-> Ġactor . f iring Mode Index Ġ= Ġproperty Int () ĊĠĠĠĠĠĠĠĠĠ Ġ// AT sl Weapon _ Trajectory ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠActor CMD . process ( actor , Ġbunch , Ġrep Obj , Ġwaiting Handle , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ//} ĊĠĠĠ Ġ// catch Ġ( e Ġ: ĠException ) ĊĠĠĠ Ġ//{ ĊĠĠĠ Ġ// Ġ Ġdebug ln Ġ{ Ġ(" Weapon CMD Ġis Ġthrowing Ġsomewhere : Ġ$ e Ġ${ e . stack Trace } Ġ${ e . message } Ġ${ e . cause }") Ġ} ĊĠĠĠ Ġ//} ĊĠĠĠ Ġ// return Ġfalse ĊĠ Ġ} Ċ }