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 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 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 LETZTE AeNDERUNG ---------------- :: 19.08.2013, Zesstra