package Ġworld . greg s . void ps . world . activity . skill . wood cut ting Ċ Ċ import Ġworld . greg s . void ps . engine . client . message Ċ import Ġworld . greg s . void ps . engine . entity . character . contain . has Item Ċ import Ġworld . greg s . void ps . engine . entity . character . player . Player Ċ import Ġworld . greg s . void ps . engine . entity . character . player . skill . Level . has Ċ import Ġworld . greg s . void ps . engine . entity . character . player . skill . Skill Ċ import Ġworld . greg s . void ps . engine . entity . definition . Item Definitions Ċ import Ġworld . greg s . void ps . engine . entity . item . Item Ċ import Ġworld . greg s . void ps . engine . utility . get Ċ import Ġworld . greg s . void ps . engine . utility . to Title Case Ċ import Ġworld . greg s . void ps . engine . utility . to Un ders core Case Ċ import Ġworld . greg s . void ps . world . interact . entity . player . equip . required Level Ċ Ċ enum Ġclass ĠHat chet ( val Ġindex : ĠInt ) Ġ{ ĊĠĠĠ Ġ// ĠRegular Ġhat chet Ġindices Ġtaken Ġfrom ĠRS 3 Ġ" Sk illing ĠCh ances " Ġspreadsheet ĊĠĠĠ ĠB ron ze Hat chet ( 0 ), ĊĠĠĠ ĠI ron Hat chet ( 1 ), ĊĠĠĠ ĠSte el Hat chet ( 2 ), ĊĠĠĠ ĠBlack Hat chet ( 3 ), ĊĠĠĠ ĠM ith ril Hat chet ( 4 ), ĊĠĠĠ ĠAdam ant Hat chet ( 5 ), ĊĠĠĠ ĠRun e Hat chet ( 6 ), ĊĠĠĠ ĠDrag on Hat chet ( 7 ), ĊĠĠĠ ĠS ac red C lay Hat chet ( 6 ), ĊĠĠĠ ĠVol atile C lay Hat chet ( 6 ), ĊĠĠĠ ĠIn fer no Ad ze ( 7 ), ĊĠĠĠ Ġ// ĠSte aling Ġcreation ĊĠĠĠ ĠHat chet Class 1 ( 0 ), ĊĠĠĠ ĠHat chet Class 2 ( 1 ), ĊĠĠĠ ĠHat chet Class 3 ( 2 ), ĊĠĠĠ ĠHat chet Class 4 ( 3 ), ĊĠĠĠ ĠHat chet Class 5 ( 4 ), ĊĠĠĠ Ġ// ĠD unge one ering Ġhat chet Ġindices Ġmade Ġup ĊĠĠĠ ĠNov ite Hat chet ( 0 ), ĊĠĠĠ ĠB ath us Hat chet ( 1 ), ĊĠĠĠ ĠMar mar os Hat chet ( 2 ), ĊĠĠĠ ĠK rat on ite Hat chet ( 3 ), ĊĠĠĠ ĠFr act ite Hat chet ( 4 ), ĊĠĠĠ ĠZe phy rium Hat chet ( 5 ), ĊĠĠĠ ĠArg on ite Hat chet ( 6 ), ĊĠĠĠ ĠK ata gon Hat chet ( 7 ), ĊĠĠĠ ĠG org on ite Hat chet ( 8 ), ĊĠĠĠ ĠPro meth ium Hat chet ( 9 ), ĊĠĠĠ ĠPri mal Hat chet ( 1 0 ); ĊĊĠĠĠ Ġval Ġid : ĠString Ġ= Ġname . to Title Case (). to Un ders core Case () ĊĊĠĠĠ Ġfun Ġcalculate Chance ( tree Hat chet Differ ences : ĠInt Range ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( 0 Ġuntil Ġindex ). sum By Ġ{ Ġcalculate Hat chet Chance ( it , Ġtree Hat chet Differ ences ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrequired Level : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIn fer no Ad ze Ġ-> Ġ 6 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ac red C lay Hat chet , ĠVol atile C lay Hat chet Ġ-> Ġ 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġget < Item Definitions >(). get ( id ). required Level () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġregular Ġ= Ġvalues (). copyOf Range ( 0 , Ġ 1 2 ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġhas Requirements ( player : ĠPlayer , Ġhat chet : ĠItem ?, Ġmessage : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhas Requirements ( player , Ġget ( hat chet ?. name Ġ?: Ġreturn Ġfalse ) Ġ?: Ġreturn Ġfalse , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġhas Requirements ( player : ĠPlayer , Ġhat chet : ĠHat chet ?, Ġmessage : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hat chet Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . message (" You Ġneed Ġa Ġhat chet Ġto Ġch op Ġdown Ġthis Ġtree .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . message (" You Ġdo Ġnot Ġhave Ġa Ġhat chet Ġwhich Ġyou Ġhave Ġthe Ġwood cut ting Ġlevel Ġto Ġuse .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hat chet Ġ== ĠIn fer no Ad ze Ġ&& Ġ! player . has ( Skill . Fire making , Ġ 9 2 , Ġmessage )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! player . has ( Skill . W ood cut ting , Ġhat chet . required Level , Ġmessage )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( player : ĠPlayer ): ĠHat chet ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġvalues (). filter Ġ{ Ġhat chet Ġ-> Ġhas Requirements ( player , Ġhat chet , Ġfalse ) Ġ&& Ġplayer . has Item ( hat chet . id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist . max By OrNull Ġ{ Ġhat chet Ġ-> Ġhat chet . index Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġhighest ( player : ĠPlayer ): ĠHat chet ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġregular . last OrNull Ġ{ Ġhat chet Ġ-> Ġhas Requirements ( player , Ġhat chet , Ġfalse ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Hat chet ( name : ĠString ): ĠBoolean Ġ= Ġname . endsWith (" hat chet ") Ġ|| Ġname Ġ== ĠIn fer no Ad ze . id ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Hat chet ( item : ĠItem ): ĠBoolean Ġ= Ġis Hat chet ( item . name ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( name : ĠString ): ĠHat chet ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġname . to Un ders core Case () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( hat chet Ġin Ġvalues ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġhat chet . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhat chet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalculates Ġthe Ġchance Ġof Ġsuccess Ġout Ġof Ġ 2 5 6 Ġgiven Ġa Ġ[ hat chet ] Ġand Ġthe Ġhat chet Ġch ances Ġfor Ġthat Ġtree Ġ[ tree Hat chet Differ ences ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġhat chet ĠThe Ġindex Ġof Ġthe Ġhat chet Ġ( 0 .. 7 ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtree Hat chet Differ ences ĠThe Ġmin Ġand Ġmax Ġincrease Ġchance Ġbetween Ġeach Ġhat chet ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġchance Ġof Ġsuccess ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcalculate Hat chet Chance ( hat chet : ĠInt , Ġtree Hat chet Differ ences : ĠInt Range ) Ġ= Ġif Ġ( hat chet Ġ% Ġ 4 Ġ< Ġ 2 ) Ġtree Hat chet Differ ences . last Ġelse Ġtree Hat chet Differ ences . first ĊĊĠĠĠ Ġ} Ċ }