FindPotion()

FUNKTION:
     varargs int FindPotion(string s);

DEFINIERT IN:
     /std/player/potion.c

ARGUMENTE:
     string s
       Ausgabetext. Wenn 0/Leerstring, wird Default verwendet.

BESCHREIBUNG:
     Diese Funktion gibt einem aufrufenden Spieler eventuell diesen ZT.
     
     Das aufrufende Spielerobjekt muss dafuer:
     * diesen ZT im Potionmaster in seiner Liste eingetragen haben
     * diesen ZT in der Liste der bekannten Traenke haben (durch
       Orakel also fuer ihn auch freigeschaltet)
     * darf keine Playerkills haben (P_KILLS)
     * darf nicht im Editiermodus sein
     * darf kein Geist sein (Ausnahme: Geisterschloss)

     Wenn alle Kriterien erfolgreich erfuellt sind, wird 's' oder 
     "Du findest einen Zaubertrank, den Du sofort trinkst." ausgegeben
     und dem Spieler ggf die Wahl der Attribute gegeben.

RUeCKGABEWERT:
     0 bei Nichtvergabe, 1 bei erfolgreicher Vergabe.

BEISPIELE:
     string detail_papiere() {
       if (this_player()->FindPotion(
         break_string("Beim Rumwuehlen in den Papieren entdeckst Du einen "
                      "kleinen Zaubertrank, den Du sofort trinkst.", 78)))
         return "";  
         // Es muss ein String zurueckgegeben werden, da man sonst
         // die Fehlermeldung "Sowas siehst du hier nicht." bekommt
       else
         return "Die Papiere sind alle unbeschriftet.\n";
     }

SIEHE AUCH:
     Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
     Verwandt:  AddKnownPotion(), RemoveKnownPotion(), InList()
     Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
     Befehl:    traenke (fuer Magier zum Einschalten des Findens von ZTs)

6.Feb 2016 Gloinson
