austreten()
FUNKTION:
    varargs int austreten(int loss)

ARGUMENTE:
    int loss       Prozentsatz, um den sich die Gildenskills verschlechtern

DEFINIERT IN:
    /std/gilden_ob.c

BESCHREIBUNG:
    Austrittsfunktion der Gilde. Prueft die Restriktionen der Gilde und
    laesst this_player() ggf austreten. Das Austreten aus der Standard-
    gilde ist dabei nicht moeglich.

    Der Gildenmaster loest ggf ein EVT_GUILD_CHANGE aus. Dabei werden
    E_OBJECT, E_GUILDNAME, E_LAST_GUILDNAME entsprechend gesetzt.

    Der Gildenmaster senkt auch die Skill/Spell-Faehigkeiten um 'loss' bzw.
    normalerweise mindestens 20%.

    Durch Ueberschreiben koennen hier zB Abschiedsmeldungen gesendet werden.

SIEHE AUCH:
    GObj Lernen:    LearnSkill, LearnSpell, InitialSkillAbility
    * Anzeigen:     SkillListe
    * Verwalten:    AddSpell (gilde), AddSkill, QuerySpell, QuerySkill
    * Nutzen:       UseSpell (gilde)
    * Properties:   P_GUILD_SKILLS, P_GLOBAL_SKILLPROPS
    Gildenfkt.:
    * Ein/Austritt: beitreten, bei_oder_aus_treten
    * Props dafuer: P_GUILD_RESTRICTIONS

3. Okt 2011 Gloinson