Steht in der *Trommelwirbel* Engine.
Sonst wärs ja zu einfach
Um die Schadensberechnung zu ändern musst du die alte "ausklinken" und eine neue erstellen.
Damit die alte nicht mehr greift, muss der Waffenschaden aller Waffen auf 0 gesetzt werden.
Statt der/den Damage-Eigenschaften musst du eine andere, freie Eigenschaft, wie z.B. HP verwenden.
Damit kannst du dann den Waffenschaden speichern.
Neben dem Waffenschaden spielt auch die Stäre/Waffenskill eine Rolle:
Wenn der NPC nämlich einen Volltreffer macht, wird die Stärke hinzuaddiert(wie die genaue Formel ist, weiß ich nicht, steht aber zigfach hier im Forum).
Somit muss man entweder die Stärke, oder den Waffenskill auf einen anderen, unbenutzten Aivar auslagern.
So nun wird kein Schaden mehr gemacht; das alte System ist somit "ausgeklinkt".
Nun muss man ein neues erstellen.
Wie du schon weißt, wird die Trefferwahrnehmung in Assessdamage behandelt.
Da musst du ansetzen und den Schaden über b_MagichurtNPC verteilen, wobei du da deine eigene Formel verwenden kannst.
Nun gibts aber das Problem mit dem Blocken: Wenn eine NPC pariert, wird egal ob er dabei getroffen wird, oder nur die Luft pariert die Assessdamagewahrnehmung ausgelöst.
Um dies zu umgehen kann man die Hitpoints in einem Aivar zwischenspeichern und in Assessdamage abfragen und aktualisieren: Ist der gespeicherte Wert != dem aktuellen HP-Wert, so wurde der NPC getroffen.
Bei dem Ganzen musst du noch beachten, auch die B_MM_Assessdamage zu verwenden.
Bei ZS_Zaubern, wie Eisblock musst du dann eine Mini_Version der Assessdamage schreiben, die nur die Schadensvergabe regelt und dem NPC im ZS freischalten (Bsp:
Code:
Npc_PercEnable (self, PERC_ASSESSDAMAGE, MINI_ASSESSDAMAGE);
)
Sonst würde der NPC im Eisblock (oder anderen ZS) keinerlei Schaden erleiden, wenn der Held munter auf ihn einhämmert.