skill_info_liste
================

SI_*
----
::

DEFINIERT IN
------------
::

    /sys/newskills.h

BESCHREIBUNG
------------
::

    Die folgende Liste der SI-Typen ist grob nach Gueltigkeit fuer Skills
    und Spells sortiert.

    

    Anwendungsorte der SI_-Werte sind:
    - /std/living/combat und von dort gerufene Skills (Kampf)
    - /std/gilden_ob und in Gilden lernbare Spells/Skills
    - /std/spellbook und von Spellbooks ausgefuehrte Spells
    - /std/living/life und von dort gerufene Skills (Alkohol)
    - /std/shells/* und entsprechende Rassenskills

    Im Skillsystem unter /std/living/skills wird vor auf Informationen
    aus dem Teil #1 Ruecksicht genommen. Einige dieser Werte
    werden auch permanent im Spieler gespeichert (wie zB die
    SI_SKILLABILITY).

AKTUELLE LISTE: (5. Oktober 2011)
 #1 Skills und Spells:
    SI_SKILLFUNC: string
     Beinhaltet den Namen der Methode, die die eigentliche Funktionalitaet
     des Skills/Spells implementiert.
     Falls nicht angegeben, wird bei Spells durch UseSpell() das Verb, das
     der Spieler eingegeben hat, als Spell-Methodenname angenommen.
     Im Gildenobjekt kann hier abweichend von Spell-Namen stehen, wie die
     Spellfunktion im Spellbook heisst.

    SI_CLOSURE: closure
     Optimiert den Zugriff fuer den internen Gebrauch, indem die gefundene
     Spell/Skillfunktion darin direkt gespeichert wird und so lange gueltig
     ist, bis das/die Objekt(e)/Closure(s) zerstoert sind.
     Kann theoretisch auch fuer externe Skills durch (Autoload-)Objekte
     benutzt werden.

    SI_SKILLABILITY: int
     Faehigkeit, den Spell/Skill zu benutzen. Normal ist von
     -MAX_ABILITY bis MAX_ABILITY.

    SI_SKILLDAMAGE_TYPE: string*
     Art des Schadens eines Angriffs: siehe Schadenstypen in /sys/combat.h

    SI_SKILLDAMAGE_MSG: string
     Meldung anstatt der Waffe oder Haende-Meldung.
    SI_SKILLDAMAGE_MSG2: string
     Meldung anstatt der Waffe oder Haende-Meldung fuer den Raum.

    SI_INHERIT: string
     Enthaelt den Namen des Skills/Spells, von dem geerbt wird. Das
     bedeutet einerseits, das LearnSkill() auch diesen uebergeordneten
     Skill beeinflusst und andererseits, dass bei Skills auch dieser
     uebergeordnete Skill im Rahmen einer Skill-Anwendung gerufen wird.

    SI_DIFFICULTY: int / [Spells: mixed]
     Schwierigkeit eines Skills/Spells. Beeinflusst die jeweils oberen
     Schranken fuer das Lernen eines Skills/Spells in Abhaengigkeit 
     von Spielerlevel.
     Wenn in einem Spell-Info-Mapping kein Wert steht wird bei Spells
     automatisch SI_SPELLCOST genommen, der Wert im Spell-Info-Mapping
     geht beim Lernen aber immer vor Parametern.
    FACTOR(SI_DIFFICULTY): int / mixed
    OFFSET(SI_DIFFICULTY): int / mixed
     Nur fuer Spellbooks/Spells. Der mixed-Parameter kann Funktionen
     enthalten. Siehe unten bei SI_SPELLCOST.

    SI_LASTLIGHT: int
     Zeitpunkt, bis wann der Standardskills SK_NIGHTVISION den Spieler
     sehen laesst.

    SI_TESTFLAG: int
     Wenn gesetzt, dann soll der Skill nicht genutzt, sondern nur getestet
     werden, ob er erfolgreich waere. Entspricht also in etwa dem Aufruf
     von SpellSuccess() in Spellbooks, wird aber bei UseSkill() als
     Skill-Parameter uebergeben.
     Der Skill muss entsprechend implementiert sein!

    SI_GUILD: string
     Angabe der Gilde, aus der der Skill stammt. Sinnvoll, wenn der Skill
     nicht aus der aktuellen P_GUILD stammt. Fuer generelle Skills/Spells
     zB waere das "ANY".
     Gilt nicht fuer Spells!

    SI_ENEMY: object
     Aktuelles Feindesobjekt, wird bei Skill-Anwendung aus dem Kampf heraus
     von std/living/combat.c an den Skill uebergeben.
     Beispiel: Standardwaffenskills, SK_MAGIC_DEFENSE, SK_MAGIC_ATTACK,
               SK_TWOHANDED, SK_SPELL_DEFEND, SK_INFORM_DEFEND und
               SK_DEFEND_OTHER.

    SI_FRIEND: object
     Zu verteidigendes Freundesobjekt, wird bei Skill-Anwendung aus dem
     Kampf heraus von std/living/combat.c an den Skill uebergeben.
     Beispiele: SK_INFORM_DEFEND und SK_DEFEND_OTHER.

    SI_MAGIC_TYPE: string*
     Enthaelt ein Array der Magietypen, die zum Einsatz kommen. Die Angabe
     geschieht zB im Spellbook und beeinflusst SpellDefend().

    SI_LAST_USE: int (eventuell obsolet)
     Letzte Nutzung des Skills.

    

    SI_LEARN_PROB: int (eventuell obsolet)
     Lernwahrscheinlichkeit.

    SI_SKILLDURATION: int
     Dauer des Skills/Spells. Momentan nicht allzu verbreitet in Nutzung.

 #2 nur fuer Spells:
    SI_SPELLBOOK: string
     Kann direkt das enthaltende Spellbook fuer einen Spell enthalten.

    SM_RACE: mapping
      Mapping, das als Key die Rasse und als Value ein Mapping X
      enthaelt. Dieses Mapping X wird direkt zu sinfo hinzugefuegt und
      ueberschreibt damit bei Bedarf Defaultwerte durch rassenspezifische
      Werte.

    SI_SPELLCOST: int / mixed
    FACTOR(SI_SPELLCOST): int / mixed
    OFFSET(SI_SPELLCOST): int / mixed
     Beinhaltet die Werte, die fuer die Berechnung der Spellkosten
     zustaendig sind.
     Dabei gilt: Realkosten = OFFSET(COST) + (COST * FACTOR(COST))/100
     Die einzelnen Eintraege koennen anstatt eines fixen Wertes auch den
     Verweis auch eine Funktion in Form von Closure/Methodenname/Array mit
     Objekt/Objektname und Methodenname enthalten. Siehe dazu auch
     execute_anything().

    SI_TIME_MSG: string
     Meldung, die dem Spieler mitteilt, dass er noch nicht wieder einen
     Spell casten kann. Falls dieser Eintrag nicht gesetzt ist, wird
     ein Standardtext ausgegeben.

    SI_SP_LOW_MSG: string
     Meldung, die dem Spieler mitteilt, dass er zu wenige
     Konzentrationspunkte besitzt, um den Spell zu casten. Falls dieser
     Eintrag nicht gesetzt ist, wird ein Standardtext ausgegeben.

    SI_PREPARE_MSG: string
     Meldung, die dem Spieler ausgegeben werden soll, wenn er einen Spell
     vorbereitet. Ansonsten wird ein Standardtext ausgegeben.

    SI_PREPARE_BUSY_MSG: string
     Meldung, die dem Spieler ausgegeben werden soll, wenn er schon diesen
     Spell vorbereitet. Ansonsten wird ein Standardtext ausgegeben.

    SI_PREPARE_ABORT_MSG: string
     Meldung, die dem Spieler ausgegeben werden soll, wenn er die
     Vorbereitung dieses Spells durch einen anderen Spell unterbricht.
     Ansonsten wird ein Standardtext ausgegeben.

    SI_NOMAGIC: int
     Wert zwischen 0 und 100 (oder mehr), der gegen die P_NOMAGIC-Wirkung
     eines Raumes wirkt.
     Je hoeher der Wert ist, desto unwahrscheinlicher ist es, dass ein
     Raum den Spell durch Antimagie stoert. Ein Raum sollte nur Werte
     zwischen 0 und 100 gesetzt haben. Ist der Wert des Raums groesser
     als der hier angegeben, dann blockiert er Magie mit einer gewissen
     eben seiner angegebenen Wahrscheinlichkeit.

    SI_NOMAGIC_MSG: string
     Meldung, die bei Fehlschlag durch P_NOMAGIC des Raumes ausgegeben
     wird. Ansonsten wird ein Standardtext ausgegeben.

      

    SI_SPELLFATIGUE: int / mixed
    FACTOR(SI_SPELLFATIGUE): int / mixed
    OFFSET(SI_SPELLFATIGUE): int / mixed
     Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt werden.
     Die Berechnung und die moeglichen Angaben (Closure etc.) sind
     identisch zu SI_SPELLCOST.
     Das Spellbook gibt bei Nicht-Wieder-Bereitschaft SI_TIME_MSG aus.

    SI_X_SPELLFATIGUE: mapping mit ([string key: int val])
     Werte, die fuer die Berechnung der Wieder-Cast-Zeit benutzt werden.
     Spellbook-Casten: Mapping wird durch Aufruf von CheckSpellFatigue(<key>)
     am Caster gefiltert. Nur wenn das resultierende Mapping leer ist (kein
     <key> hat einen gueltigen Fatigue-Eintrag), ist Spell castbar, sonst
     Ausgabe von SI_TIME_MSG.
     Nach Spellbook-Casten: Setzen der Fatigue fuer alle <val> > 0 mit <key>.

    SI_SKILLLEARN: int / mixed
    FACTOR(SI_SKILLLEARN): int / mixed
    OFFSET(SI_SKILLLEARN): int / mixed
     Werte, die fuer die Berechnung der Lerngeschwindigkeit benutzt
     werden, normalerweise pro A_INT/2 je 0.01% (also 1 von MAX_ABILITY).
     Die Berechnung und die moeglichen Angaben (Closure etc.) sind
     identisch zu SI_SPELLCOST.

    SI_LEARN_ATTRIBUTE: mapping
     Mapping, welches die Attribute, nach denen gelernt werden soll
     als Keys enthaelt. Der Value legt die Gewichtung fest, denn bei
     mehreren Attributen wird ein Mittelwert gebildet.
     Der Normalfall entspraeche ([A_INT: 1]) fuer SI_LEARN_ATTRIBUTE.

    SI_NO_LEARN
     Wenn man (temporaer!) nicht will, dass dieser Skill gelernt wird.
     Muss von den Spellbooks beachtet werden.
     Sollte niemals im Spieler abgespeichert werden. Oder permanent in
     Gilde/Spellbook gesetzt sein. Sondern im Laufe einesr Nutzung in der
     jew. Kopie von sinfo gesetzt werden, die gerade genutzt wird.

    

     SI_SKILLARG: string
     Beinhaltet den Text, den der Spieler nach dem Spellkommando eingegeben
     hat. Z.B. stuende bei "krallenschlag ork 2" der Text "ork 2" im
     Parameter.

    SI_SKILLRESTR_USE: mixed
     Einschraenkungen fuer das Nutzen des Spells.
     Wird normalerweise direkt im Spellbook fuer den Spell eingetragen.
     Die einzelnen Moeglichkeiten werden in der manpage zu
     "check_restrictions" erlaeutert.

     

    SI_SKILLRESTR_LEARN: mixed
     Einschraenkungen fuer das Lernen des Spells.
     Wird normalerweise direkt im Gildenobjekt fuer den Spell
     eingetragen.
     Die einzelnen Moeglichkeiten werden in der manpage zu
     "check_restrictions" erlaeutert.

    SI_SKILLINFO: string
    SI_SKILLINFO_LONG: string
     Beschreibung des Spells. Wird im Gildenobjekt eingetragen und
     SI_SKILLINFO wird von SkillListe angezeigt.

    SI_SKILLDAMAGE: int / mixed
    FACTOR(SI_SKILLDAMAGE): int / mixed
    OFFSET(SI_SKILLDAMAGE): int / mixed
     Werte, die fuer die Schadenshoehenberechnung des Spells benutzt
     werden (random ueber den Gesamtwert normalerweise).
     Die Berechnung und die moeglichen Angaben (Closure etc.) sind
     identisch zu SI_SPELLCOST.

    SI_SKILLDAMAGE_BY_ROW
     Ein Mapping mit Boni fuer den Angriff aus bestimmten Kampfreihen.
     Funktioniert nur bei Verwendung von TryDefaultAttackSpell-Spells
     aus dem Spellbook.
     Der Key steht fuer eine bestimmte Reihe, sein Wert fuer den
     randomisierten Bonus fuer Lebewesen, die aus dieser Reihe casten.
    OFFSET(SI_SKILLDAMAGE_BY_ROW)
     Ein Mapping mit fixem Wert fuer Row-Boni im Kampf.

     Beispiel: AddSpell("feuerball", 20,
                        ([SI_SKILLDAMAGE:50,
                          OFFSET(SI_SKILLDAMAGE):100,
                          SI_SKILLDAMAGE_BY_ROW:([2:40,3:20}),
                          OFFSET(SI_SKILLDAMAGE_BY_ROW):([2:20]), ...
     gibt
      Reihe 1: random(50)+100;
      Reihe 2: random(50)+100+random(40)+20
      Reihe 3: random(50)+100+random(20)
     ACHTUNG: Hier gilt nicht die selbe Struktur wie bei SI_SPELLCOST!

    SI_SPELL: mapping
     Dieser Eintrag enthaelt verschiedene Unterwerte, die den Spell
     gerade fuer Angriffs-Spells genauer beschreiben. Siehe Defend()
     fuer eine Beschreibung der verschiedenen Eintraege (die so auch
     in das Spellbook uebernommen werden koennen).

    SI_COLLATERAL_DAMAGE: int
     Hiermit kann man einen Prozentwert von SI_SKILLDAMAGE (inklusive
     Offsets und Factor) fuer Kollateralschaden an Freunden im definierten
     Bereich eines Flaechenspells (TryGlobalAttackSpell()) angeben.
     10 bedeutet bei OFFSET(SI_SKILLDAMAGE)=100 zB 10% von 100 = 10 = 1 LP
     an mit reduce_hit_points() verursachtem Schaden.

    

    SI_NUMBER_ENEMIES, SI_NUMBER_FRIENDS: int
     Wird von TryGlobalAttackSpell() im Spell gesetzt und enthaelt die
     Anzahl der im angegebenen Bereich befindlichen Feinde und Freunde.
     Ist dementsprechend von informativem Nutzen fuer den Angegriffenen
     und das Spellbook NACH Aufruf von TryGlobalAttackSpell().

    

    SI_DISTANCE, SI_WIDTH, SI_DEPTH: int
     Limitiert die Entfernung, Tiefen und Breite der Wirkung eines
     TryGlobalAttackSpell()

    SI_SKILLHEAL: int
     Konvention fuer Spells im Spellbook, dort den Heilwert zu hinterlegen,
     hat keine Auswirkungen unter /std/.

    SI_USR: mixed
     Fuer selbst definierte Infos, spellbookabhaengig.

    SI_PREPARE_TIME: int
     Dauer der Zeit fuer zu praeparierende Spells.

    SI_ATTACK_BUSY_MSG: string
     Meldung, die dem Spieler mitteilt, dass er schon zu beschaeftigt
     mit einem Angriff ist, um einen Spell zu casten. Falls dieser
     Eintrag nicht gesetzt ist, wird  ein Standardtext ausgegeben.

    SI_NO_ATTACK_BUSY: int
     Enthaelt als Flag NO_ATTACK_BUSY_QUERY wenn der Spell NICHT wie
     eine Spezialwaffe die Aktionen einschraenkt. Siehe P_ATTACK_BUSY.

    SI_ATTACK_BUSY_AMOUNT: int
     Menge des P_ATTACK_BUSY fuer diesen Spell. Falls dieser Wert nicht
     gesetzt ist, aber auch SI_NO_ATTACK_BUSY nicht mit
     NO_ATTACK_BUSY_QUERY ausgezeichnet ist wird 1 angenommen.

SIEHE AUCH
----------
::

    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
    * Nutzung:      UseSpell, UseSkill
    * Abfragen:     QuerySkill, QuerySkillAbility
    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
    * sonstig:      spruchermuedung
    * Properties:   P_NEWSKILLS
    Spellbook:      UseSpell, Learn, SpellSuccess
    Gilden:         gilden-doku
    Kampf:          Defend

7. Nov 2012 Gloinson