package Ġworld . greg s . void ps . engine . entity . character . contain Ċ Ċ import Ġworld . greg s . void ps . cache . config . data . Container Definition Ċ import Ġworld . greg s . void ps . engine . client . message Ċ import Ġworld . greg s . void ps . engine . client . send Container Items Ċ import Ġworld . greg s . void ps . engine . entity . character . player . Player Ċ import Ġworld . greg s . void ps . engine . entity . definition . Container Definitions Ċ import Ġworld . greg s . void ps . engine . entity . item . Floor Items Ċ 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 Ċ Ċ fun ĠPlayer . send Container ( id : ĠString , Ġsecondary : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġval Ġdefinitions : ĠContainer Definitions Ġ= Ġget () ĊĠĠĠ Ġval Ġcontainer Ġ= Ġcontainer ( id , Ġdefinitions . get ( id ), Ġsecondary ) ĊĠĠĠ Ġsend Container ( container ) Ċ } Ċ Ċ fun ĠPlayer . send Container ( container : ĠContainer , Ġsecondary : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġsend Container Items ( ĊĠĠĠĠĠĠĠ Ġcontainer Ġ= Ġget < Container Definitions >(). get ( container . id ). id , ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġif Ġ( container Ġ== Ġinventory Ġ|| Ġcontainer Ġ== Ġequipment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . getItems (). map Ġ{ Ġif Ġ( it . def . id Ġ== Ġ- 1 Ġ&& Ġit . amount Ġ> Ġ 0 ) Ġ 0 Ġelse Ġit . def . id Ġ}. to IntArray () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . getItems (). map Ġ{ Ġit . def . id Ġ}. to IntArray () ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġamounts Ġ= Ġcontainer . getItems (). map Ġ{ Ġif Ġ( it . amount Ġ< Ġ 0 ) Ġ 0 Ġelse Ġit . amount Ġ}. to IntArray (), ĊĠĠĠĠĠĠĠ Ġprimary Ġ= Ġsecondary ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠPlayer . has Container ( id : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġcontainers . containsKey ( id ) Ċ } Ċ Ċ fun ĠPlayer . container ( definition : ĠContainer Definition , Ġsecondary : ĠBoolean Ġ= Ġfalse ): ĠContainer Ġ{ ĊĠĠĠ Ġreturn Ġcontainer ( definition . string Id , Ġdefinition , Ġsecondary ) Ċ } Ċ Ċ fun ĠPlayer . container ( id : ĠString , Ġsecondary : ĠBoolean Ġ= Ġfalse ): ĠContainer Ġ{ ĊĠĠĠ Ġval Ġdefinitions : ĠContainer Definitions Ġ= Ġget () ĊĠĠĠ Ġval Ġcontainer Ġ= Ġdefinitions . get ( id ) ĊĠĠĠ Ġreturn Ġcontainer ( id , Ġcontainer , Ġsecondary ) Ċ } Ċ Ċ fun ĠPlayer . container ( id : ĠString , Ġdef : ĠContainer Definition , Ġsecondary : ĠBoolean Ġ= Ġfalse ): ĠContainer Ġ{ ĊĠĠĠ Ġval Ġshop Ġ= Ġdef [" shop ", Ġfalse ] ĊĠĠĠ Ġreturn Ġcontainers . get Or Put ( if Ġ( secondary ) Ġ"_ $ id " Ġelse Ġid ) Ġ{ ĊĠĠĠĠĠĠĠ ĠContainer ( items Ġ= ĠArray ( def . length ) Ġ{ ĠItem ("", Ġif Ġ( shop ) Ġ- 1 Ġelse Ġ 0 ) Ġ}) ĊĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠ ĠContainer . setup ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcapacity Ġ= Ġdef . length , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecondary Ġ= Ġsecondary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġif Ġ( secondary ) Ġ"_ $ id " Ġelse Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Amount Ġ= Ġif Ġ( shop ) Ġ- 1 Ġelse Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack Mode Ġ= Ġif Ġ( shop ) ĠStack Mode . Always Ġelse Ġdef [" stack ", ĠStack Mode . Normal ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ= Ġthis @ container . events ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠPlayer . inventory : ĠContainer ĊĠĠĠ Ġget () Ġ= Ġcontainer (" inventory ") Ċ Ċ val ĠPlayer . equipment : ĠContainer ĊĠĠĠ Ġget () Ġ= Ġcontainer (" w orn _ equipment ") Ċ Ċ val ĠPlayer . be ast Of Bur den : ĠContainer ĊĠĠĠ Ġget () Ġ= Ġcontainer (" be ast _ of _ bur den ") Ċ Ċ fun ĠPlayer . has Item ( item : ĠString ) Ġ= Ġinventory . contains ( item ) Ġ|| Ġequipment . contains ( item ) Ċ Ċ fun ĠPlayer . has Item ( item : ĠString , Ġamount : ĠInt ) Ġ= Ġinventory . contains ( item , Ġamount ) Ġ|| Ġequipment . contains ( item , Ġamount ) Ċ Ċ fun ĠPlayer . purchase ( amount : ĠInt , Ġcurrency : ĠString Ġ= Ġ" coins "): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( inventory . remove ( currency , Ġamount )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġmessage (" You Ġdon 't Ġhave Ġenough Ġ${ currency . to Title Case ()}. ") ĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ Ċ fun ĠPlayer . inventory Full () Ġ= Ġmessage (" You Ġdon 't Ġhave Ġenough Ġinventory Ġspace .") Ċ Ċ /** Ċ Ġ* ĠAdds Ġ[ item ] Ġto Ġ[ inventory ] Ġand Ġdrops Ġexcess Ċ Ġ*/ Ċ fun ĠPlayer . give ( item : ĠString , Ġamount : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġinventory . add ( item , Ġamount ) ĊĠĠĠ Ġwhen Ġ( inventory . result ) Ġ{ ĊĠĠĠĠĠĠĠ ĠContainer Result . Success Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ ĠContainer Result . Overflow Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġinventory . indexOf ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġinventory . get Amount ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoverflow Ġ= Ġ(( current . to Long () Ġ+ Ġamount ) Ġ- ĠInt . MAX _ VALUE ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfill Ġ= ĠInt . MAX _ VALUE Ġ- Ġcurrent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( fill Ġ== Ġ 0 Ġ|| Ġinventory . add ( item , Ġfill )) Ġ&& Ġoverflow Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems : ĠFloor Items Ġ= Ġget () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( item , Ġoverflow , Ġtile , Ġ- 1 , Ġ- 1 , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠContainer Result . Full Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems : ĠFloor Items Ġ= Ġget () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( item , Ġamount , Ġtile , Ġ- 1 , Ġ- 1 , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse Ċ }