bool Soldier::isFriendTo(WalkerPtr wlk) const { bool isFriend = _dfunc()->friends.count( wlk->type() ) > 0; if( !isFriend ) { isFriend = WalkerRelations::isNeutral( type(), wlk->type() ); if( nation() != world::unknownNation ) { isFriend = WalkerRelations::isNeutral( nation(), wlk->nation() ); } } return isFriend; }
void Peace::addCriminal( WalkerPtr wlk ) { if( is_kind_of<Rioter>( wlk ) ) { _d->rioterSeen = true; } /*else if( is_kind_of<Protestor>( wlk ) ) { _d->protestorOrMugglerSeen = true; }*/ else { Logger::warning( "Peace:addCrimianl unknown walker %d", wlk->type() ); _d->someCriminalSeen = true; } }
std::string WalkerThinks::check(WalkerPtr walker, PlayerCityPtr city, const StringArray& own) { city::InfoPtr info = city->statistic().services.find<Info>(); if( info.isNull() ) { Logger::warning( "CitizenIdea::check no city service info" ); return "##unknown_reason##"; } if( walker.is<Animal>() ) { std::string text = utils::format( 0xff, "##animal_%s_say##", WalkerHelper::getTypename( walker->type() ).c_str() ); return text; } Info::Parameters params = info->lastParams(); ThinksConstructor ret( WalkerHelper::getTypename( walker->type() ) ); ret << own; ret.addIf( params[ Info::monthWithFood ] < 3, "_so_hungry" ) .addIf( params[ Info::godsMood ] < 3, "_gods_angry" ) .addIf( params[ Info::colloseumCoverage ] < 3, "_need_colloseum" ) .addIf( params[ Info::theaterCoverage ] < 3, "_need_theater" ) .addIf( params[ Info::entertainment ] < 20, "_low_entertainment" ) .addIf( params[ Info::needWorkers ] > 0, "_need_workers" ) .addIf( params[ Info::workless ] > 15, "_high_workless" ) .addIf( params[ Info::tax ] > 10, "_high_tax" ) .addIf( params[ Info::payDiff ] < 0, "_low_salary" ); if( !ret.empty() ) return ret.random(); ret.clear(); ret << own; ret.addIf( params[ Info::lifeValue ] > 90, "_good_life" ) .addIf( params[ Info::lifeValue ] > 75, "_average_life" ) .addIf( params[ Info::lifeValue ] > 50, "_normal_life" ) .addIf( params[ Info::education ] > 90, "_good_education" ); return ret.empty() ? "##unknown_reason##" : ret.random(); }