do_damage()

do_damage(L)

FUNKTION

int do_damage(int dam,mixed enemy);

DEFINIERT IN

/std/living/life.c

ARGUMENTE

int dam
     Die abzuziehenden Lebenspunkte (HP).
object enemy
     Das Objekt, welches den Schaden zufuegt.

BESCHREIBUNG

Dem Lebewesen werden <dam> HP abgezogen. Falls weniger als 0 HP uebrig
bleiben, so stirbt es automatisch mittels die().
Ein Lebewesen, welches sich bewegt hat, trifft die ersten Kampfrunden
sehr viel schlechter, um Rein-Raus-Attacken zu verhindern. Dieses
Vorgehen kann man mittels P_ENABLE_IN_ATTACK_OUT deaktivieren.
Lebewesen, welche P_NO_ATTACK gesetzt haben, kann man mit dieser
Funktion nicht schaden.

RUeCKGABEWERT

Der tatsaechlich verursachte Schaden.

BEMERKUNGEN

Beim Gegner <enemy>, falls vorhanden, werden XP und ALIGN entsprechend
angepasst, im Opfer wird der Gegner in P_KILLER vermerkt, der Kampf wird
beendet.
Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
und balancetechnisch guenstigere Loesung, da Defend() magische
Verteidigungen, die der Spieler bei sich hat beruecksichtigt.
Es sollte also allein schon aus Fairness gegenueber den Objekten
anderer Magier Defend() immer dem direkten reduce_hit_points() oder
do_damage() vorgezogen werden. Mittels der Flags in 'spell' kann man
sehr viele Parameter beeinflussen.

SIEHE AUCH

Verwandt:  Defend(L), reduce_hit_points(L), die(L)
Props:     P_NO_ATTACK, P_ENABLE_IN_ATTACK_OUT, P_KILLER
           P_XP, P_ALIGN

23.Feb.2004 Gloinson