package Ġcom . floor 1 3 . game . core . cre atures Ċ Ċ import Ġcom . floor 1 3 . game . core . Position Ċ import Ġcom . floor 1 3 . game . core . map . Map Ċ Ċ class ĠC yb org ( kind Id : ĠString , Ġposition : ĠPosition ): ĠCre ature ( kind Id , Ġposition ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġper ception : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbase Per ception Ġ// ĠTODO : Ġper ception Ġclasses , Ġitem Ġbon uses ĊĠĠĠ Ġoverride Ġval Ġconnectivity : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbase Connectivity Ġ// ĠTODO : Ġconnectivity Ġclasses , Ġitem Ġbon uses ĊĠĠĠ Ġoverride Ġval Ġint elligence : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbase Int elligence Ġ// ĠTODO : Ġitem Ġbon uses , Ġh un ger Ġpenalty Ġ( possibly ) ĊĠĠĠĠĊĠĠĠ Ġoverride Ġval Ġcan See Through W alls Ġ= Ġfalse Ġ// ĠTODO : Ġpossible Ġ- Ġwith Ġson ar Ġsight Ġsystem ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġhit ( damage Points : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġimplement ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠTODO : Ġadd Ġfunction Ġfor Ġhitting Ġspecified Ġpart ĊĊĠĠĠ Ġoverride Ġfun Ġlevel Up ( level : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattribute Points ++ ĊĠĠĠ Ġ} ĊĊ ĉ override Ġval Ġsight Range Ġ= Ġ 4 Ġ// ĠFIXME : Ġstub ĊĉĊ ĉ override Ġfun Ġcalculate Field Of View ( map : ĠMap ): ĠList < Position > Ġ{ Ċĉ ĉ fun Ġdist ( x 1 : ĠInt , Ġy 1 : ĠInt , Ġx 2 : ĠInt , Ġy 2 : ĠInt ): ĠFloat Ġ{ Ċĉĉ ĉ val Ġx Ġ= Ġx 2 Ġ- Ġx 1 Ċĉĉ ĉ val Ġy Ġ= Ġy 2 Ġ- Ġy 1 Ċĉĉ ĉ return Ġx . toFloat () Ġ* Ġx . toFloat () Ġ+ Ġy . toFloat () Ġ* Ġy . toFloat () Ċĉ ĉ } Ċĉ ĉ // ĠTODO : Ġpick ĠFO V Ġcalculation Ġmethod Ġbas ing Ġon ĠS ight ĠSystem Ġitem Ċĉ ĉ // ĠĠĠĠĠĠ Ġof Ġthe Ġcy b org Ġand Ġoptimize Ċĉ ĉ return Ġmap . get Tiles With Indices () Ċĉĉĉ ĉ . filter Ġ{ Ġ( x , Ġy , Ġtile ) Ġ-> Ġdist ( x , Ġy , Ġposition . x , Ġposition . y ) Ġ< Ġsight Range Ġ* Ġsight Range Ġ} Ċĉĉĉ ĉ . map Ġ{ ĠPosition ( it . x , Ġit . y ) Ġ} Ċ ĉ } ĊĊĠĠĠ Ġvar Ġbase Per ception : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġbase Connectivity : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġbase Int elligence : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġattribute Points : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠ Ġ* ĠIncrease Ġint elligence Ġusing Ġone Ġattribute Ġpoint ĊĠĠĠ Ġ* Ġ@ return Ġtrue Ġ- Ġif Ġsuc ce ded , Ġfalse Ġ- Ġif Ġcy b org Ġhas Ġno Ġattribute Ġpoints ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrease Per ception (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attribute Points Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Points -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Per ception ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠ Ġ* ĠIncrease Ġint elligence Ġusing Ġone Ġattribute Ġpoint ĊĠĠĠ Ġ* Ġ@ return Ġtrue Ġ- Ġif Ġsuc ce ded , Ġfalse Ġ- Ġif Ġcy b org Ġhas Ġno Ġattribute Ġpoints ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrease Connectivity (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attribute Points Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Points -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Connectivity ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠ Ġ* ĠIncrease Ġint elligence Ġusing Ġone Ġattribute Ġpoint ĊĠĠĠ Ġ* Ġ@ return Ġtrue Ġ- Ġif Ġsuc ce ded , Ġfalse Ġ- Ġif Ġcy b org Ġhas Ġno Ġattribute Ġpoints ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrease Int elligence (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attribute Points Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Points -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Int elligence ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ