
GetFValueO()
************


FUNKTION
========

   varargs int GetFValueO(string vname, mapping map, object pl)


ARGUMENTE
=========

   vname   : name des parameters aus dem spellmapping
   map     : spellmapping
   pl      : caster


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

   'Berechnet' den Wert, den Factor und den Offset des Parameters
   in spellmapping.


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

   Berechneter (Wert*Factor)/100+Offset aus dem Spellmapping.


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

   Ruft (GetValue(vname,map,pl)*GetFactor(vname,map,pl))/100+
   GetOffset(vname,map,pl) auf.


BEISPIEL
========

   AddSpell("egal",10,
   ([
   OFFSET(SI_COST):([SM_RACE:(["Zwerg":4]) ]),
   FACTOR(SI_COST):([SM_RACE:(["Mensch":90]) ]),
   SI_SKILLDAMAGE:100,
   OFFSET(SI_SKILLDAMAGE):25,
   SI_SKILLDAMAGE_TYPE:DT_EXAMPLE,
   FACTOR(SI_SKILLDAMAGE):([SM_RACE:(["Zwerg":80,"Elf":120]) ])
   ]));

   So, was sollen uns diese Zeilen sagen?

   Es wird ein Spruch Names 'egal' ins Spellbook eingetragen. Er kostet
   regulaer 10 MP. Fuer Zwerge allerdings wird ein Offset von 4 MP
   aufgeschlagen. Ausserdem machen Zwerge nur 80% Schaden, Elfen
   hingegen 120%. Der Grundschaden betraegt 100 Schadenspunkte, der
   Offset des Schadens nochmal 25. Menschen bezahlen fuer diesen
   Spruch nur 90% der Kosten.

   Nun die Rechenbeispiele:

   Fuer die Kosten:
           Value   ValueO  FValue  FValueO
   Mensch     10       10       9        9
   Elf        10       10      10       10
   Hobbit     10       10      10       10
   Zwerg      10       14      10       14

   Fuer den Schaden:
                   Value   ValueO  FValue  FValueO
   Mensch          100     125     100     125
   Elf             100     125     120     150
   Hobbit          100     125     100     125
   Zwerg           100     125      80     100

   An diesem Beispiel sieht man deutlich, wie man mit ein paar
   Offsets und Faktoren die Wirkung eines Spruches deutlich
   veraendern kann. Es sollte bei eigenen Berechnungen immer
   GetFValueO benutzt werden.

Siehe auch:

   "GetValue", "GetFactor", "GetOffset", "GetFValue", "GetValueO"
