package Ġio . github . m ch ern y av sky . rog ue lin . cre atures Ċ Ċ import Ġascii Panel . Ascii Panel Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . slf 4 j . Logger Ċ import Ġio . github . m ch ern y av sky . rog ue lin . items .* Ċ import Ġio . github . m ch ern y av sky . rog ue lin . world . Field Of View Ċ import Ġio . github . m ch ern y av sky . rog ue lin . world . Point Ċ import Ġio . github . m ch ern y av sky . rog ue lin . world . World Ċ Ċ class ĠPlayer ( world : ĠWorld ) Ġ: ĠCre ature ( world , Ġ'@ ', ĠAsc ii Panel . bright White , Ġ" player ", Ġ 1 0 0 , Ġ 7 , Ġ 2 0 , Ġ 5 ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĊĠĠĠ Ġval Ġfield Of View : ĠField Of View Ġ= ĠField Of View ( world ) ĊĠĠĠ Ġval Ġinventory : ĠInventory Ġ= ĠInventory ( 2 0 ) ĊĠĠĠ Ġval Ġmax Food : ĠInt Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġvar Ġfood : ĠInt Ġ= Ġmax Food Ġ/ Ġ 3 Ġ* Ġ 2 ĊĠĠĠ Ġvar Ġmessages : ĠMutable List < String >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġfield Of View . update ( position , Ġmax Vision Radius ) ĊĠĠĠĠĠĠĠ Ġmodify Food (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages ?. add ( message ) ĊĠĠĠĠĠĠĠ Ġlogger . info ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan See ( other Position : ĠPoint ): ĠBoolean Ġ= Ġfield Of View . isVisible ( other Position ) ĊĊĠĠĠ Ġoverride Ġfun Ġmove ( new Position : ĠPoint ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( new Position Ġ== Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġworld . get Creature ( new Position )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattack ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġworld . get Tile ( new Position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tile . is Ground ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġnew Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodify Food (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( tile . is Dig gable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdig ( new Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattack ( other : ĠCre ature ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . attack ( other ) ĊĠĠĠĠĠĠĠ Ġmodify Food (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdig ( position : ĠPoint ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . dig ( position ) ĊĠĠĠĠĠĠĠ Ġmodify Food (- 5 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġeat ( food : ĠFood ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinventory . remove ( food ) ĊĠĠĠĠĠĠĠ Ġmodify Food ( food . value ) ĊĠĠĠĠĠĠĠ Ġif Ġ( food . value Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify (" G ross !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmodify Food ( amount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfood Ġ+= Ġamount ĊĊĠĠĠĠĠĠĠ Ġif Ġ( food Ġ> Ġmax Food ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood Ġ= Ġmax Food ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify (" You Ġcan 't Ġbelieve Ġyour Ġst om ach Ġcan Ġhold Ġthat Ġmuch !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodify Health (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( food Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodify Health (- health ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġequip Armor ( armor : ĠArm or ) Ġ{ ĊĠĠĠĠĠĠĠ Ġune quip Armor () ĊĠĠĠĠĠĠĠ Ġthis . armor Ġ= Ġarm or ĊĠĠĠĠĠĠĠ Ġnotify All (" equip Ġa Ġ${ armor . name }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġune quip Armor () Ġ= Ġarm or ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġarm or Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġnotify All (" une quip Ġa Ġ${ it . name }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġequip Weapon ( weapon : ĠWeapon ) Ġ{ ĊĠĠĠĠĠĠĠ Ġune quip Weapon () ĊĠĠĠĠĠĠĠ Ġthis . weapon Ġ= Ġweapon ĊĠĠĠĠĠĠĠ Ġnotify All (" equip Ġa Ġ${ weapon . name }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġune quip Weapon () Ġ= Ġweapon ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġweapon Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġnotify All (" une quip Ġa Ġ${ it . name }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpick up () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġworld . getItem ( position ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( inventory . is Full ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify (" Inventory Ġis Ġfull .") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . removeItem ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinventory . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify All (" pickup Ġa Ġ${ item . name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdrop ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( world . drop Item ( position , Ġitem )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ=== Ġarm or ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġune quip Armor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( item Ġ=== Ġweapon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġune quip Weapon () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinventory . remove ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify All (" drop Ġa Ġ${ item . name }") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify (" There 's Ġnow here Ġto Ġdrop Ġthe Ġ${ item . name }. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ