Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
  }
}
Ejemplo n.º 3
0
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();
}