
ChangeReputation()
******************


FUNKTION
========

   public varargs int ChangeReputation(string repid, int value, int silent)


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

   /std/player/reputation.c


ARGUMENTE
=========

   repid
     Jede neue Reputationsgruppe muss anfangs mit einer eindeutigen ID von
     einem EM in den Reputationsmaster eingetragen werden. Danach kann man
     ueber die eindeutige ID <repid> auf sie zugreifen.
   value
     Der Wert, um den die Reputation geaendert werden soll. Positive Werte
     erhoehen die Reputation, negative verschlechtern sie.
   silent
     Ein optionales Flag. Falls gesetzt, wird keine Standardmeldung ueber
     die Reputationsaenderung an den Spieler ausgegeben. Man koennte dann
     eigene Meldungen ausgeben.


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

   Vor der Aenderung wird ein Check auf die UID des ausfuehrenden Objektes
   ausgefuehrt, "fremde" Reputationen darf man somit nicht veraendern.
   Man kann aber selbstverstaendlich in begruendeten Faellen mit dem
   zustaendigen Magier/Regionsmagier sprechen, ob man ebenfalls Zugriff
   erhaelt. Eingetragen wird dies schlussendlich durch einen EM.


RUeCKGABEWERT
=============

   REP_RET_SUCCESS    Reputation wurde veraender.
   REP_RET_SUCCESSCUT Reputation wurde auf Min / Max veraendert
   REP_RET_WRONGARGS  Falsche Argumente fuer ChangeRep()
   REP_RET_INVALIDUID Unzulaessige UID / keine Zugriffsrechte
   REP_RET_ALREADYMAX Reputation bereits Max / Min
   REP_RET_INACTIVE   Reputation momentan inaktiv
   REP_RET_INVALIDREP Reputation nicht vorhanden


BEISPIELE
=========

   s. reputation


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

   reputation
   GetReputation(), GetReputations()


ZULETZT GEAeNDERT
=================

06.04.2009, Zesstra
