QuerySkillBonus()
*****************


FUNKTION
========

   int QuerySkillBonus(object caster, object target, mapping sinfo)


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

   beliebigen Objekten


ARGUMENTE
=========

   object caster
        der Benutzer eines Skills/Spells (Lebewesen)
   object target
        das Ziel eines Skills/Spells (beliebiges Objekt oder 0)
   mapping sinfo
        das Skillinfomapping


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

   Diese Funktion wird von der Gilde des Casters im Environment und ggf.
   auch im Ziel eines Skills/Spells gerufen.
   Die Gilde uebergibt neben Caster und Ziel ein Mapping mit Skillinfos (s.
   SI Konstanten aus new_skills.h fuer Details), welches alle wesentlichen
   Informationen ueber den benutzten Skill/Spell enthaelt.

   QuerySkillBonus() liefert einen Bonus (oder Malus) zurueck, den der
   Aufrufer als Faktor in der Berechnung des Effekts des Skills
   beruecksichtigen kann (aber nicht muss).
   Der Bonus/Malus wird hierbei als ganzzahliger 0.01-Prozentwert aufgefasst
   (10000 == 100% == keine Veraenderung, 1 == 0.01%).

   Diese Funktion kann in beliebigen Objekten (re-)definiert werden. Im
   Falle mobiler Objekte oder anhaltender Effekte ist jedoch eine
   Balancegenehmigung erforderlich, sofern kampfrelevante Skills beeinflusst
   werden.
   Eine flaechendeckende Reduzierung von Skills/Gildenfaehigkeiten ist
   explizit _nicht_ erwuenscht und soll auf einzelne Raeume und Objekte
   beschraenkt sein.


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

   Das Mapping <sinfo> kann in dieser Funktion geaendert werden. Dieses kann
   allerdings sehr weitreichende Folgen haben, speziell bei mangelnden
   Kenntnissen ueber Interna des Skillsystems. Daher bitte von Aenderungen
   absehen bzw. vorher mit dem jeweiligen Gildenmagier und/oder der
   Gildenbalance abklaeren.
   Die Bedeutung der Werte in <sinfo> kann je nach Gilde variieren. Im
   Zweifelsfall bitte bei den jeweiligen Gildenmagiern nachfragen.
   Die Gilde kann diese Funktion rufen, muss aber nicht. Ebenso kann sie das
   Ergebnis beruecksichtigen, muss aber nicht.


BEISPIELE
=========

   In einem Raum sollen Heilzauber besonders effizient sein:
   int QuerySkillBonus(object caster, object target, mapping sinfo) {
      if (pointerp(sinfo[SI_MAGIC_TYPE])
          && member(sinfo[SI_MAGIC_TYPE], MT_HEILUNG) > -1)
      {
          return 12000 + random(3000); // bonus von 120-150%
      }
      return 10000;
   }


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

   gilden-doku
   <new_skills.h>


LETZTE AeNDERUNG
================

19.08.2013, Zesstra
