package Ġworld . player . skill . mining Ċ Ċ import Ġapi . pre def .* Ċ import Ġio . l una . game . action . Action Ċ import Ġio . l una . game . action . Inventory Action Ċ import Ġio . l una . game . model . Entity State Ċ import Ġio . l una . game . model .` object `. GameObject Ċ import Ġio . l una . game . model . item . Item Ċ import Ġio . l una . game . model . mob . Animation Ċ import Ġio . l una . game . model . mob . Player Ċ import Ġworld . player . skill . craft ing . gem Cut ting . Gem Ċ Ċ /** Ċ Ġ* ĠAn Ġ[ Inventory Action ] Ġthat Ġwill Ġenable Ġthe Ġmining Ġof Ġro cks . Ċ Ġ*/ Ċ class ĠM ine O re Action ( pl r : ĠPlayer , Ġval Ġpick : ĠPick axe , Ġval Ġo re : ĠO re , Ġval Ġrock Obj : ĠGameObject ) Ġ: ĊĠĠĠĠĠĠĠ ĠInventory Action ( pl r , Ġfalse , Ġ 1 , Ġrand ( RANDOM _ FAIL _ RATE )) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHow Ġoften Ġthe Ġplayer Ġwill Ġrandomly Ġstop Ġmining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠR AN DOM _ FAIL _ RATE Ġ= Ġ 1 5 .. 5 5 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġbase Ġmining Ġrate , Ġthe Ġlower Ġthis Ġnumber Ġthe Ġfaster Ġo res Ġwill Ġbe Ġm ined Ġoverall . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠBASE _ M INE _ RATE Ġ= Ġ 2 5 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġbase Ġchance Ġof Ġmining Ġa Ġgem , Ġthe Ġlower Ġthis Ġnumber Ġthe Ġmore Ġlikely Ġa Ġgem Ġwill Ġbe Ġm ined . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠBASE _ GE M _ CH ANCE Ġ= Ġ 2 5 6 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġmining Ġanimation Ġdelay . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠAN IM ATION _ DELAY Ġ= Ġ 4 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAll Ġgems Ġthat Ġcan Ġbe Ġreceived , Ġin Ġorder Ġof Ġlowest Ġlevel Ġ-> Ġhighest . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠGE MS Ġ= ĠGem . ALL . sorted By Ġ{ Ġit . level Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcounter Ġfor Ġthe Ġmining Ġanimation Ġdelay . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġanimation Delay Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġexecute If ( start : ĠBoolean ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġmob . mining . level Ġ< Ġo re . level Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġwe Ġhave Ġrequired Ġlevel . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmob . sendMessage (" You Ġneed Ġa ĠMin ing Ġlevel Ġof Ġ${ ore . level } Ġto Ġmine Ġthis .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ! Pick axe . has Pick ( mob , Ġpick ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmob . sendMessage (" You Ġneed Ġa Ġpick axe Ġto Ġmine Ġo res .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġrock Ġisn 't Ġalready Ġm ined Ġand Ġif Ġwe Ġstill Ġhave Ġa Ġpick axe . ĊĠĠĠĠĠĠĠ Ġrock Obj . state Ġ== ĠEntity State . IN ACTIVE Ġ|| Ġ! Pick axe . has Pick ( mob , Ġpick ) Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmob . sendMessage (" You Ġsw ing Ġyour Ġpick Ġat Ġthe Ġrock .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Ġ= Ġget Min ing Delay () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexecute () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! mob . inventory . is Full Ġ&& Ġrand (). nextInt ( BASE _ GE M _ CH ANCE ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Gem () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmob . sendMessage (" You Ġmanage Ġto Ġmine Ġsome Ġ${ ore . typeName . toLowerCase ()}. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmob . mining . add Experience ( ore . exp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġremove Chance Ġ= Ġo re . dep letion Chance ĊĠĠĠĠĠĠĠ Ġif Ġ( remove Chance Ġ!= Ġnull Ġ&& Ġ( remove Chance Ġ== Ġ 1 Ġ|| Ġrand (). nextInt ( remove Chance ) Ġ== Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete And Resp awn Rock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterrupt () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Ġ= Ġget Min ing Delay () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( animation Delay Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Delay -- ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmob . animation ( pick . animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Delay Ġ= ĠAN IM ATION _ DELAY ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd (): ĠList < Item ?> Ġ= ĠlistOf ( Item ( ore . item )) ĊĊĠĠĠ Ġoverride Ġfun Ġstop () Ġ= Ġmob . animation ( Animation . CANCEL ) ĊĊĠĠĠ Ġoverride Ġfun Ġignore If ( other : ĠAction < *> ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( other ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠM ine O re Action Ġ-> Ġrock Obj Ġ== Ġother . rock Obj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete And Resp awn Rock () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( world . remove Object ( rock Obj )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" here 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġempty Id Ġ= ĠO re . ORE _ TO _ EMPTY [ rock Obj . id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( empty Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . add Object ( empty Id , Ġrock Obj . position , Ġrock Obj . object Type , Ġrock Obj . direction , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresp awn Ġ= Ġo re . resp awn Ticks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resp awn Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . schedule Once ( resp awn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . add Object ( rock Obj . id , Ġrock Obj . position , Ġrock Obj . object Type , Ġrock Obj . direction , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Min ing Delay (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbase Time Ġ= Ġrand ( BASE _ M INE _ RATE Ġ/ Ġ 2 , ĠBASE _ M INE _ RATE ) ĊĠĠĠĠĠĠĠ Ġbase Time Ġ-= Ġ( pick . strength Ġ- Ġo re . res istance ) ĊĠĠĠĠĠĠĠ Ġif Ġ( mob . mining . level Ġ> Ġo re . level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo re L vl Factor Ġ= Ġo re . level Ġ/ Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmining L vl Factor Ġ= Ġmob . mining . level Ġ/ Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Time Ġ-= Ġ( mining L vl Factor Ġ- Ġo re L vl Factor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( base Time Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Time Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( base Time Ġ> ĠBASE _ M INE _ RATE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Time Ġ= ĠBASE _ M INE _ RATE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbase Time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdrop Gem () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfound Gem : ĠGem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġchance Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġfor Ġ( gem Ġin ĠGE MS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rand (). nextInt ( chance ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Gem Ġ= Ġgem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchance Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( found Gem Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfound Gem Ġ= ĠGE MS . first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmob . sendMessage (" You Ġfind Ġa Ġgem Ġin Ġthe Ġrock .") ĊĠĠĠĠĠĠĠ Ġmob . inventory . add ( Item ( found Gem . unc ut )) ĊĠĠĠ Ġ} Ċ }