Pacify()
********


FUNKTION
========

   public int Pacify(object caster)


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

   /std/living/combat.c


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

   Diese Funktion versucht, ein Lebewesen zu befrieden.
   Will eine Gilde ein Lebewesen befrieden, muss sie hierfuer diese Funktion
   in dem Lebewesen aufrufen.

   Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in
   einem Lebewesen realisiert werden.

   Standardmaessig funktioniert die Funktion wie folgt:

   * Kommt der Versuch vom Spellcaster selbst, ist er immer erfolgreich.
   * Kommt der Versuch von einem Teamkollegen, ist er immer erfolgreich.
   * Hat das Lebewesen keine Gegner, ist der Versuch immer erfolglos.

   In diesen Faellen erfolgt auch keine Erhoehung des Befriedezaehlers.

   In anderen Faellen wird die in P_PEACE_HISTORY fuer die Gilde des Casters
   abgelegte Zahl erfolgreicher Befriedungen (ANZ), die Intelligenz des
   Casters (INT_CASTER) und die Intelligenz des Lebenwesens selber (INT_ME)
   ermittelt.
   Anschliessend wird eine Wahrscheinlichkeit w ausgerechnet:

     w = (INT_CASTER + 10 - ANZ*4) / (INT_ME + 10)

   Hierbei gibt w die Chance auf eine erfolgreiche Befriedung an. Mittels einer
   Zufallszahl wird bestimmt, ob der aktuelle Versuch erfolgreich ist. Falls
   ja, wird der Zaehler fuer die Gilde des Casters in P_PEACE_HISTORY erhoeht.

   Je oefter ein Lebewesen als von einer Gilde schon befriedet wurde, desto
   unwahrscheinlicher, dass es erneut darauf 'hereinfaellt'.


BEMERKUNGEN
===========

   * Die Funktion kann auch ueberschrieben werden, um ein vom Magier
     gewuenschtes Verhalten zu realisieren. Ein komplettes Abhaengen
     von Befriedungen sollte dabei aber die Ausnahme sein!

   * Diese Funktion verwaltet auch das P_PEACE_HISTORY, speziell die
     Reduktion der Erfolgszaehler. Ueberschreibt man sie ohne das
     geerbte Pacify() zu nutzen, wird P_PEACE_HISTORY nicht mehr
     verwaltet.


RUECKGABEWERTE
==============

   1 - das Lebewesen wurde erfolgreich befriedet..
   0 - der Befriedeversuch ist gescheitert.


BEISPIELE
=========

    Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
    gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
    (in Abhaengigkeit von NPC-Intelligenz INT_ME und vergangener erfolgreicher
    Versuche).

   INT_ME  Erfolgswahrscheinlichkeiten je nach Anzahl erfolgreicher Versuche
                1       2       3       4       5       6       7       8
        0     280     240     200     160     120      80      40       0
        2  233,33     200  166,67  133,33     100   66,67   33,33       0
        4     200  171,43  142,86  114,29   85,71   57,14   28,57       0
        6     175     150     125     100      75      50      25       0
        8  155,56  133,33  111,11   88,89   66,67   44,44   22,22       0
       10     140     120     100      80      60      40      20       0
       12  127,27  109,09   90,91   72,73   54,55   36,36   18,18       0
       14  116,67     100   83,33   66,67      50   33,33   16,67       0
       16  107,69   92,31   76,92   61,54   46,15   30,77   15,38       0
       18     100   85,71   71,43   57,14   42,86   28,57   14,29       0
       20   93,33      80   66,67   53,33      40   26,67   13,33       0
       22    87,5      75    62,5      50    37,5      25    12,5       0
       24   82,35   70,59   58,82   47,06   35,29   23,53   11,76       0
       26   77,78   66,67   55,56   44,44   33,33   22,22   11,11       0
       28   73,68   63,16   52,63   42,11   31,58   21,05   10,53       0
       30      70      60      50      40      30      20      10       0
       32   66,67   57,14   47,62    38,1   28,57   19,05    9,52       0
       34   63,64   54,55   45,45   36,36   27,27   18,18    9,09       0
       35   62,22   53,33   44,44   35,56   26,67   17,78    8,89       0
       36   60,87   52,17   43,48   34,78   26,09   17,39     8,7       0
       38   58,33      50   41,67   33,33      25   16,67    8,33       0
       40      56      48      40      32      24      16       8       0
       42   53,85   46,15   38,46   30,77   23,08   15,38    7,69       0
       44   51,85   44,44   37,04   29,63   22,22   14,81    7,41       0
       46      50   42,86   35,71   28,57   21,43   14,29    7,14       0
       48   48,28   41,38   34,48   27,59   20,69   13,79     6,9       0
       50   46,67      40   33,33   26,67      20   13,33    6,67       0
       52   45,16   38,71   32,26   25,81   19,35    12,9    6,45       0
       54   43,75    37,5   31,25      25   18,75    12,5    6,25       0
       56   42,42   36,36    30,3   24,24   18,18   12,12    6,06       0
       58   41,18   35,29   29,41   23,53   17,65   11,76    5,88       0
       60      40   34,29   28,57   22,86   17,14   11,43    5,71       0
       62   38,89   33,33   27,78   22,22   16,67   11,11    5,56       0
       64   37,84   32,43   27,03   21,62   16,22   10,81    5,41       0
       66   36,84   31,58   26,32   21,05   15,79   10,53    5,26       0
       68    35,9   30,77   25,64   20,51   15,38   10,26    5,13       0
       70      35      30      25      20      15      10       5       0
       72   34,15   29,27   24,39   19,51   14,63    9,76    4,88       0
       74   33,33   28,57   23,81   19,05   14,29    9,52    4,76       0
       76   32,56   27,91   23,26    18,6   13,95     9,3    4,65       0
       78   31,82   27,27   22,73   18,18   13,64    9,09    4,55       0
       80   31,11   26,67   22,22   17,78   13,33    8,89    4,44       0
       82   30,43   26,09   21,74   17,39   13,04     8,7    4,35       0
       84   29,79   25,53   21,28   17,02   12,77    8,51    4,26       0
       86   29,17      25   20,83   16,67    12,5    8,33    4,17       0
       88   28,57   24,49   20,41   16,33   12,24    8,16    4,08       0
       90      28      24      20      16      12       8       4       0
       92   27,45   23,53   19,61   15,69   11,76    7,84    3,92       0
       94   26,92   23,08   19,23   15,38   11,54    7,69    3,85       0
       96   26,42   22,64   18,87   15,09   11,32    7,55    3,77       0
       98   25,93   22,22   18,52   14,81   11,11    7,41     3,7       0
      100   25,45   21,82   18,18   14,55   10,91    7,27    3,64       0


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

   P_ACCEPT_PEACE, P_PEACE_HISTORY


LETZTE AENDERUNG
================

07.06.2008, Zesstra
