package Ġe ft . we apons . builds . exports . web Ċ Ċ import Ġe ft . we apons . builds . items . templates . Test Item Templates Data Ċ import Ġe ft . we apons . builds . tree . Item Tree Ċ import Ġe ft . we apons . builds . tree . Item TreeNode Type Ċ import Ġe ft . we apons . builds . utils . Items Ċ import Ġe ft . we apons . builds . utils . Locale . itemName Ċ import Ġe ft . we apons . builds . utils . Locale . item ShortName Ċ import Ġe ft . we apons . builds . utils . Tr ader Sell Data Ċ import Ġe ft . we apons . builds . utils . have Parent Named Ċ import Ġe ft . we apons . builds . utils . item Cost Ċ Ċ fun Ġprocess Tree ( tree : ĠItem Tree ): ĠWeb Weapon Tree Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= ĠItems [ tree . id ] ĊĠĠĠ Ġreturn ĠWeb Weapon Tree ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġtree . id , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġitem Name ( tree . id ), ĊĠĠĠĠĠĠĠ Ġcost Ġ= Ġgenerate Item Cost ( tree ), ĊĠĠĠĠĠĠĠ Ġre co il Ġ= Ġitem . props . re co il Force Up , ĊĠĠĠĠĠĠĠ Ġer gon omics Ġ= Ġitem . props . er gon omics , ĊĠĠĠĠĠĠĠ Ġslots Ġ= Ġmain Slots ( tree ), ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġitems ( tree ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun Ġmain Slots ( tree : ĠItem Tree ): ĠSet < Weapon Slot > Ġ{ ĊĠĠĠ Ġreturn Ġtree . children . map Ġ{ Ġweapon Slot Mapping ( it ) Ġ}. toSet () Ċ } Ċ Ċ private Ġfun Ġweapon Slot Mapping ( it : ĠItem Tree ): ĠWeapon Slot Ġ{ ĊĠĠĠ Ġreturn ĠWeapon Slot ( ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġslot Type ( it ), ĊĠĠĠĠĠĠĠ Ġrequired Ġ= Ġit . required , ĊĠĠĠĠĠĠĠ Ġslots Ġ= Ġchildren Slots ( it ), ĊĠĠĠĠĠĠĠ Ġmods Ġ= Ġchildren Mods ( it ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun Ġchildren Mods ( tree : ĠItem Tree ): ĠSet < Weapon Mod > Ġ{ ĊĠĠĠ Ġreturn Ġtree . children . filter Ġ{ Ġit . type Ġ== ĠItem TreeNode Type . ITEM Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItems [ it . id ] ĊĠĠĠĠĠĠĠ ĠWeapon Mod ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId Ġ= Ġit . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġslots Ġ= Ġmain Slots ( it ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. toSet () Ċ } Ċ Ċ fun Ġitems ( tree : ĠItem Tree ): ĠSet < Web Item > Ġ{ ĊĊĠĠĠ Ġval Ġitems : ĠMutable Set < Web Item > Ġ= Ġmutable Set Of () ĊĠĠĠ Ġfor Ġ( child Ġin Ġtree . children ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . addAll ( items ( child )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġitems Ġ+ Ġtree . children . filter Ġ{ Ġit . type Ġ== ĠItem TreeNode Type . ITEM Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItems [ it . id ] ĊĠĠĠĠĠĠĠ ĠWeb Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġit . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġitem Name ( it . id ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshort Name Ġ= Ġitem ShortName ( it . id ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġweapon Mod Type ( item ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre co il Percent Ġ= Ġitem . props . re co il , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġer gon omics Ġ= Ġitem . props . er gon omics , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcost Ġ= Ġgenerate Item Cost ( it ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. sorted By Ġ{ Ġit . type Ġ}. toSet () Ċ } Ċ Ċ fun Ġweapon Mod Type ( mod : ĠTest Item Templates Data ): ĠWeapon Mod Type Ġ{ ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Gas block ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . G AS _ BLOCK ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" M uzzle ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . MU ZZ LE ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" P ist ol G rip ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . PI ST OL _ GR IP ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Stock ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . STO CK ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Hand guard ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . HAND GU ARD ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Mount ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . MOUNT ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Fore g rip ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . FORE GR IP ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Bar rel ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . BAR REL ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Receiver ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . RECE IVER ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" Aux iliary Mod ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . AUX ILI ARY ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( have Parent Named ( mod , Ġ" B ip od ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeapon Mod Type . BI POD ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠRuntimeException (" Unknown Ġmapping Ġfor Ġmod Ġtype : Ġ${ mod . name }") Ċ } Ċ Ċ fun Ġchildren Slots ( tree : ĠItem Tree ): ĠSet < Weapon Slot > Ġ{ ĊĠĠĠ Ġreturn Ġtree . children . filter Ġ{ Ġit . type Ġ== ĠItem TreeNode Type . META Ġ}. map Ġ{ Ġweapon Slot Mapping ( it ) Ġ}. toSet () Ċ } Ċ Ċ fun Ġslot Type ( slot : ĠItem Tree ): ĠWeapon Slot Type Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( slot . name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" mod _ gas _ block " Ġ-> ĠWeapon Slot Type . SLOT _ G AS _ BLOCK ĊĠĠĠĠĠĠĠ Ġ" mod _ mu zzle " Ġ-> ĠWeapon Slot Type . SLOT _ MU ZZ LE ĊĠĠĠĠĠĠĠ Ġ" mod _ p ist ol _ g rip " Ġ-> ĠWeapon Slot Type . SLOT _ PI ST OL _ GR IP ĊĠĠĠĠĠĠĠ Ġ" mod _ p ist ol _ g rip _ ak ms " Ġ-> ĠWeapon Slot Type . SLOT _ PI ST OL _ GR IP ĊĠĠĠĠĠĠĠ Ġ" mod _ p ist olg rip " Ġ-> ĠWeapon Slot Type . SLOT _ PI ST OL _ GR IP ĊĠĠĠĠĠĠĠ Ġ" mod _ stock " Ġ-> ĠWeapon Slot Type . SLOT _ STO CK ĊĠĠĠĠĠĠĠ Ġ" mod _ stock _ 0 0 0 " Ġ-> ĠWeapon Slot Type . SLOT _ STO CK ĊĠĠĠĠĠĠĠ Ġ" mod _ stock _ 0 0 1 " Ġ-> ĠWeapon Slot Type . SLOT _ STO CK ĊĠĠĠĠĠĠĠ Ġ" mod _ stock _ ak ms " Ġ-> ĠWeapon Slot Type . SLOT _ STO CK ĊĠĠĠĠĠĠĠ Ġ" mod _ hand guard " Ġ-> ĠWeapon Slot Type . SLOT _ HAND GU ARD ĊĠĠĠĠĠĠĠ Ġ" mod _ mount " Ġ-> ĠWeapon Slot Type . SLOT _ MOUNT ĊĠĠĠĠĠĠĠ Ġ" mod _ mount _ 0 0 0 " Ġ-> ĠWeapon Slot Type . SLOT _ MOUNT ĊĠĠĠĠĠĠĠ Ġ" mod _ mount _ 0 0 1 " Ġ-> ĠWeapon Slot Type . SLOT _ MOUNT ĊĠĠĠĠĠĠĠ Ġ" mod _ mount _ 0 0 2 " Ġ-> ĠWeapon Slot Type . SLOT _ MOUNT ĊĠĠĠĠĠĠĠ Ġ" mod _ mount _ 0 0 3 " Ġ-> ĠWeapon Slot Type . SLOT _ MOUNT ĊĠĠĠĠĠĠĠ Ġ" mod _ fore g rip " Ġ-> ĠWeapon Slot Type . SLOT _ FORE GR IP ĊĠĠĠĠĠĠĠ Ġ" mod _ bar rel " Ġ-> ĠWeapon Slot Type . SLOT _ BAR REL ĊĠĠĠĠĠĠĠ Ġ" mod _ rec ie ver " Ġ-> ĠWeapon Slot Type . SLOT _ RECE IVER ĊĠĠĠĠĠĠĠ Ġ" mod _ scope " Ġ-> ĠWeapon Slot Type . SLOT _ SCOPE ĊĠĠĠĠĠĠĠ Ġ" mod _ bip od " Ġ-> ĠWeapon Slot Type . SLOT _ BI POD ĊĠĠĠĠĠĠĠ Ġ" mod _ t act ical " Ġ-> ĠWeapon Slot Type . SLOT _ T ACT ICAL ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unknown Ġmapping Ġfor Ġslot Ġtype : Ġ${ slot . name }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġgenerate Item Cost ( tree : ĠItem Tree ) Ġ= Ġitem Cost ( tree . id ). map Ġ{ Ġitem Cost Offer ( it ) Ġ}. toSet () Ċ Ċ private Ġfun Ġitem Cost Offer ( it : ĠTr ader Sell Data ) Ġ= ĠItem Cost Offer ( it . tr ader , Ġit . loy al Level , Ġbar ter ( it )) Ċ Ċ private Ġfun Ġbar ter ( it : ĠTr ader Sell Data ) Ġ= Ġit . bar ter . map Ġ{ Ġic Ġ-> ĠItem Cost ( ic . amount , Ġic . currency ) Ġ}. toSet () Ċ