DefendInfo() ============ FUNKTION -------- :: DEFINIERT IN ------------ :: /sys/combat.h ARGUMENTE --------- :: BESCHREIBUNG ------------ :: 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 SIEHE AUCH ---------- :: Attack, Defend 18.Jul 2006 Muadib