package Ġai . npc Ċ Ċ import Ġdata . Needs Ċ import Ġdata . Npc Ċ import Ġscreens . M go Ċ Ċ class ĠS atis fi ers Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsatisf iable Resolvers Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Fuel Ġto Ġ{ Ġnpc : ĠNpc Ġ-> Ġcan IE at Here ( npc ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Money Ġto Ġ{ Ġnpc : ĠNpc Ġ-> Ġis This Where I Work ( npc ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Social Ġto Ġ{ Ġnpc : ĠNpc Ġ-> Ġdo I Have AF riend Near by ( npc ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Rest Ġto Ġ{ Ġnpc : ĠNpc Ġ-> Ġcan IS leep Here ( npc ) Ġ}) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdo I Have AF riend Near by ( npc : ĠNpc ) Ġ: ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdo I Ġ= Ġnpc . friends . any Ġ{ Ġnpc . circle Of Concern . contains ( it . current Position ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdo I ĊĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwhere ToS atisf y Resolvers Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Rest Ġto Ġ{ Ġnpc : ĠNpc Ġ-> Ġnpc . home Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Money Ġto Ġ Ġ{ Ġnpc : ĠNpc Ġ-> Ġnpc . work Place Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Fuel Ġto Ġ{ Ġnpc : ĠNpc Ġ-> ĠM go . rest aurants . random () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNeeds . Social Ġto Ġ{ Ġnpc : ĠNpc Ġ-> ĠM go . rest aurants . random () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġis This Where I Work ( npc : ĠNpc ) Ġ: Boolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnpc . work Place . box . contains ( npc . current Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcan IE at Here ( npc : ĠNpc ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠM go . rest aurants . any Ġ{ Ġit . box . contains ( npc . current Position ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcan IS leep Here ( npc : ĠNpc ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnpc . home . box . contains ( npc . current Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ