
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
