IsTeamLeader()
**************


FUNKTION
========

   object IsTeamLeader()


DEFINIERT IN
============

   /std/living/team.c


ARGUMENTE
=========

   keine


BESCHREIBUNG
============

   Testet, ob der Spieler ein Teamleiter ist.


RUECKGABEWERT
=============

   Falls der Spieler Teamleiter ist, wird das Teamobjekt zurueckgegeben,
   sonst 0.


BEISPIEL
========

   string leader_test(object pl)
   {
    ...

    if ( objectp(pl->IsTeamLeader()) )
     return "Als Leiter eines Teams hast Du grosse Verantwortung zu "
       "tragen!";
    else
     return "Wenn Du mal Leiter eines Teams sein moechtes, solltest "
       "Du Dir vorher der Verantwortung bewusst werden!";
   }


SIEHE AUCH
==========

   Uebersicht: teamkampf
   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
   Bewegung:   IsTeamMove, TeamFlee
   Mitglieder: TeamMembers
   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
               SelectNearEnemy, SelectFarEnemy
   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
               PresentTeamPosition, SwapRows
   Sonstiges:  TeamPrefix, teamkampf_intern

Last modified: 16-08-2010, Gabylon
