Lpc Manpages

Defend()

FUNKTION:
	varargs int Defend(int dam, mixed dam_type, mixed spell, object enemy);
	
DEFINIERT IN:
	/std/living/combat.c

ARGUMENTE:
	dam
		Staerke des abzuwehrenden Angriffs
	dam_type
		String oder Stringarray mit dem/den Schadensarten des
		Angriffs
	spell
		1, String oder Mapping mit der Art des Spells
	enemy
		Feindobjekt

BESCHREIBUNG:
	Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark
	die Ruestungen und koerpereigenen Abwehrkraefte sind und die Staerke
	des Schadens dementsprechend vermindert. Mit dem Parameter 'spell'
	kann man angeben, ob der Angriff ein Zauberspruch ist, aber auch
	zusaetzliche Informationen an Defend uebergeben:
	spell	ist 1.
		Der Angriff erfolgt mit einem unspezifizierten Zauberspruch
		Sollte nicht mehr verwendet werden!
	spell	ist ein String.
		Der Angriff erfolgt durch den mit dem String benannten Zauber-
		spruch. Die Namensgebung hilft, den Spell ggf. zu erkennen.
	spell	ist ein Mapping (auch 'sinfo'-Mapping genannt).
		Das 'sinfo'-Mapping enthaelt Informationen zu dem Spell, kann
		aber auch Zusatzinfos zu 'normalen' Attacken enthalten. In dem
		Fall sollte der Key SP_PHYSICAL_ATTACK auf 1 gesetzt werden,
		um den Angriff von einem Spell zu unterscheiden. Weitere Keys
		fuer das 'sinfo'-Mapping sind in /sys/new_skills.h definiert;
		die Gilden machen ausgiebig Gebrauch davon.

BEMERKUNGEN:
	Direkt ueberschreiben kann man Defend() natuerlich nur bei NPCs.
	Wer die Defend()-Funktion bei Spielern beeinflussen will, sollte dazu
	die Property P_TMP_DEFEND_HOOK verwenden.
	Wer in einem Lebewesen Defend() und danach noch andere Funktionen
	aufruft, sollte nach dem Defend()-Aufruf nicht vergessen zu testen,
	obs das Lebewesen noch gibt!

RUECKGABEWERT:
	Der erzielte Schaden in Lebenspunkten. 

BEMERKUNGEN:
	Der Parameter 'dam' wird in 'Defend-Einheiten' angegeben, wobei 10
	Defend-Einheiten einem Lebenspunkt entsprechen.

	Defend gibt die Meldung der Trefferstaerke aus, wenn 'spell' gleich
	0 ist oder wenn im 'sinfo'-Mapping SP_SHOW_DAMAGE auf 1 gesetzt ist.
	Ggf. wird der Schaden zugefuegt und der Feind in die Liste der
	Feinde aufgenommen.
	
BEISPIELE:
	Feuerball-Spell mit Trefferanzeige und Spellnamen:
	(z.B. in einem NPC oder in einem "Zauberstab" oder sowas)
	
	enemy->Defend( 100+random(300),  // Schaden zwischen 10 und 40
                                         // Lebenspunkten bei "enemy"
	               ({ DT_FIRE }),    // Schadenstyp Feuer
	               ([ SP_NAME : "Feuerball",   // Name des Spells
	                  SP_SHOW_DAMAGE : 1 ]),   // Treffermeldung ausgeben
	               feind );          // Feindobjekt (in diesem Fall
                                         // this_object() bzw. this_player())

SIEHE AUCH:
	Attack(), P_TMP_DEFEND_HOOK, /sys/living/skills.h