Die DefendInformationen werden im Runde eines Attack/Defend Vorgangs
in Attack initial angelegt und dem Defend ueber den Parameter spell
uebergeben. Ist dieser Parameter ein Mapping, so sind die
DefendInformationen ueber den Key EINFO_DEFEND zu erhalten.
Die Informationen liegen in Form eines Mappings vor.
Vor Zugriff sollte immer auf die Existenz dieses Keys in dem Mapping
geprueft werden, da nicht alle Informationen immer existieren.
Die Keys sind in combat.h definiert und sind folgende:
ORIGINAL_AINFO - Mapping
Hier ist eine Kopie des originalen ainfo-mappings des Attacks
vorhanden mit folgenden Eintraegen:
Immer vorhandene Eintraege:
SI_ENEMY der angegriffene Gegner
Angriff mit gezueckter Waffe:
P_WEAPON das Waffenobjekt selbst
P_WEAPON_TYPE P_WEAPON_TYPE der Waffe
P_WC P_WC der Waffe
P_NR_HANDS P_NR_HANDS der Waffe
SI_SKILLDAMAGE_TYPE P_DAM_TYPE der Waffe
SI_SKILLDAMAGE waffe->QueryDamage(enemy)
bei vorhandenem Zweihandskill SK_TWOHANDED wird nur der durch
den Skill modifizierte Schadenswert uebernommen
SI_SKILLDAMAGE_MSG "mit "+waffe->name(WEM,0)
SI_SKILLDAMAGE_MSG2 "mit "+waffe->name(WEM,1)
SI_SPELL 0
Angriff mit blossen Haenden:
P_WEAPON_TYPE WT_HANDS
P_WC P_HANDS[1]
SI_SKILLDAMAGE Schadenswert, aus P_HANDS[1] und A_STR
berechnet
SI_SKILLDAMAGE_TYPE P_HANDS[2]
SI_SKILLDAMAGE_MSG
SI_SKILLDAMAGE_MSG2 beides P_HANDS[0]
SI_SPELL 0
Angriff mit einem Spell (SK_MAGIC_ATTACK):
SI_SKILLDAMAGE Schadenswert des Spells
SI_SKILLDAMAGE_TYPE Schadenstypen des Spells
SI_SKILLDAMAGE_MSG Schadensmeldung des Spells, wenn vorhanden,
sonst "mit magischen Faehigkeiten"
SI_SKILLDAMAGE_MSG2 entsprechende Meldung des Spells, wenn
gesetzt, ansonsten identisch mit
SI_SKILLDAMAGE_MSG
P_WEAPON_TYPE P_WEAPON_TYPE des Spells, wenn vorhanden,
sonst WT_MAGIC
SI_SPELL SI_SPELL des Spells
Hinweise:
- Alle Eintraege in diesem Mapping koennen bereits durch
InternalModifyAttack() veraendert worden sein.
- Die Daten werden mittels deep_copy(ainfo) eingetragen.
- Daten in den Eintraegen SI_SKILLDAMAGE* und SI_SPELL koennen bei
physikalischen Angriffen durch die Skills FIGHT(P_WEAPON_TYPE) oder
SK_FIGHT oder durch einen P_TMP_ATTACK_MOD bzw. Hook vom Typ
H_HOOK_ATTACK_MOD modifiziert worden sein.
ORIGINAL_DAM - int
Der Originalschaden aus dem Attack
ORIGINAL_DAM_TYPE - string/string*
Der Originaldamagetyp aus dem Attack
CURRENT_DAM - int
Der momentane Schaden, nach schon erfolgten Modifikationen
CURRENT_DAM_TYPE - string/string*
Der momentane Damagetyp, nach schon erfolgten Modifikationen
ENEMY_INSERTED - int
0 oder 1 je nachdem ob der Angreifer schon in der enemy-list
vorhanden war oder nicht
RFR_REDUCE - int
0 oder reduzierter Schaden durch RFR Modifikation
PRESENT_DEFENDERS - Array
Liste der durch InformDefend informierten Defender als Objekt.
Ein Defender wird immer NACH InformDefend
dazugefuegt
DEFENDING_DEFENDER - Array ({})
Hat ein durch InformDefend ein Defender verteidigt, so wird
fuer diesen Defender ein Eintrag in diesem Array vorgenommen,
welcher folgende Struktur besitzt.
({
DEF_DEFENDER - Object
Der Verteidiger, welcher VOR
DefendOther eingefuegt wird
DEF_DAM - int
Der veraenderte Schaden, welcher NACH
DefendOther eingefuegt wird
DEF_DAMTYPE string/string*
Die veraenderte Schadensart, welche
NACH DefendOther eingefuegt wird
DEF_SPELL - Mapping
Das Mapping des veraenderten Spells, welches
als Kopie NACH DefendOther eingefuegt wird
})
DEFEND_HOOK - Int/Array
DI_NOHOOK, wenn kein Hook da war, DI_HOOKINTERRUPT, wenn der
Hook das Defend unterbricht, DI_HOOK, wenn ein Hook vorhanden
ist, dieser das Defend aber unveraendert laesst.
Veraendert ein Hook das Defend, so ist hier ein Array zu finden
mit den veraenderten Parametern in der Struktur:
({
HOOK_DAM - int
Der veraenderte Schaden
HOOK_DAMTYPE - string/string*
Die veraenderte Schadensart
HOOK_SPELL - Mapping
Das Mapping des veraenderten Spells als Kopie
})
DEFEND_ARMOURS - Mapping (2 Werte pro Key)
Liste der beruecksichtigten Ruestungen. Fuer jede Ruestung
wird ein Eintrag vorgenommen, mit dem Objekt der jeweiligen
Ruestung als Key. Hierbei werden die Ruestungen erst eingetragen,
wenn ihr jeweiliges QueryDefend() aufgerufen wird, d.h. es sind nicht
von Anfang an alle getragenen Ruestung drin. Jeder Eintrag im Mapping
besitzt die folgenden 2 Werte:
DEF_ARMOUR_DAM - int
Der Schaden NACH QueryDefend (vorher 0)
DEF_ARMOUR_PROT - int
Verteidigungswert der Ruestung VOR DefendFunc
Bsp: Ich will wissen, wie gut 'ruestung' schuetzte:
spell[EINFO_DEFEND][DEFEND_ARMOURS][ruestung,DEF_ARMOUR_PROT]
DEFEND_GUILD - Array
Eine Liste mit der Modifikation der Gilde mit der Struktur
({
GUILD_DAM - int
Der veraenderte Schaden
GUILD_DAMTYPE - string/string*
Die veraenderte Schadensart
})
DEFEND_RESI - int
Schaden nach CheckResistance
DEFEND_BODY - int
Schaden nach Beruecksichtigung des Bodies (nur
physikalisch)
DEFEND_LOSTLP - int
Tatsaechlich abgezogene LP
DEFEND_CUR_ARMOUR_PROT - int
Schutz der Ruestung vor Call der
DefendFunc. Ist nur in der DefendFunc definiert. Kann auch aus
DEFEND_ARMOURS entnommen werden