blob: 4b08ddc549b5ff80eea7719f51ae260b7867d739 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001P_TMP_ATTACK_HOOK
Zesstra953f9972017-02-18 15:37:36 +01002*****************
MG Mud User88f12472016-06-24 23:31:02 +02003
Zesstra953f9972017-02-18 15:37:36 +01004********************* VERALTETE PROPERTY
5****************************** * Diese Property ist veraltet. Bitte
6nicht mehr in neuem Code nutzen. * **********************************
7************************************* P_TMP_ATTACK_HOOK
MG Mud User88f12472016-06-24 23:31:02 +02008
MG Mud User88f12472016-06-24 23:31:02 +02009
Zesstra953f9972017-02-18 15:37:36 +010010NAME
11====
MG Mud User88f12472016-06-24 23:31:02 +020012
Zesstra953f9972017-02-18 15:37:36 +010013 P_TMP_ATTACK_HOOK "attack_hook"
MG Mud User88f12472016-06-24 23:31:02 +020014
MG Mud User88f12472016-06-24 23:31:02 +020015
Zesstra953f9972017-02-18 15:37:36 +010016DEFINIERT IN
17============
MG Mud User88f12472016-06-24 23:31:02 +020018
Zesstra953f9972017-02-18 15:37:36 +010019 /sys/new_skills.h
MG Mud User88f12472016-06-24 23:31:02 +020020
MG Mud User88f12472016-06-24 23:31:02 +020021
Zesstra953f9972017-02-18 15:37:36 +010022BESCHREIBUNG
23============
MG Mud User88f12472016-06-24 23:31:02 +020024
Zesstra953f9972017-02-18 15:37:36 +010025 Mittels dieser Property koennen die Attacken eines Livings ggf.
26 abgebrochen werden noch bevor Waffen oder Skills zum ausgewertet
27 wurden.
MG Mud User88f12472016-06-24 23:31:02 +020028
Zesstra953f9972017-02-18 15:37:36 +010029 Es wird an dem Living die Property als mindestens 3-elementiges Array:
30 ({zeitpunkt, objekt, methode, ...})
31 gesetzt und die Methode 'methode' wird dann waehrend des Attack() des
32 Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
MG Mud User88f12472016-06-24 23:31:02 +020033
Zesstra953f9972017-02-18 15:37:36 +010034 Der Methode wird als Parameter der Gegner uebergeben.
35
36 Gibt die Methode 0 als Rueckgabewert zurueck, wird die Attacke sofort
37 kommentarlos abgebrochen.
38
39
40BEMERKUNGEN
41===========
42
43 - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
44 - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
45 Property auf 0 gesetzt
46 - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
47 pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
48 im Code anderer und ist andererseits unfair gegenueber ihnen
49
50
51BEISPIELE
52=========
53
54 *** der Spieler erhaelt eine Verwundung, die ihn manchmal behindert ***
55 if(!pointerp(tmp=TP->QueryProp(P_TMP_ATTACK_HOOK)) ||
56 sizeof(tmp)<3 || tmp[0]<=time()) {
57 TP->SetProp(P_TMP_ATTACK_HOOK,
58 ({time()+3600, this_object(), "test_hurt"}));
59 ...
60
61 // die entsprechende Methode, die bei jedem Angriff ueber Attack()
62 // gerufen wird ...
63 int test_hurt(object enemy) {
64
65 // mit 10% Chance generell und 20% Chance bei groesseren Gegnern
66 // bricht der Angriff ab ... previous_object() ist natuerlich
67 // der Angreifer
68 if(!random(10) ||
69 (enemy->QueryProp(P_SIZE)>previous_object()->QueryProp(P_SIZE) &&
70 !random(5)) {
71
72 tell_object(previous_object(),
73 "Deine Wunde schmerzt dich zu sehr um anzugreifen.\n");
74 tell_room(environment(previous_object()),
75 previous_object()->Name(WER,1)+" zuckt vor Schmerzen zusammen.\n",
76 ({previous_object()}));
77 return 0;
MG Mud User88f12472016-06-24 23:31:02 +020078 }
79
Zesstra953f9972017-02-18 15:37:36 +010080 // ansonsten geht der Angriff weiter
81 return 1;
82 }
83
84
85SIEHE AUCH
86==========
87
88 Angriff: Attack(L)
89 Schutz: Defend(L)
90 Verwandt: InternalModifyAttack(L), P_TMP_ATTACK_MOD
91 Hooks: P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_DEFEND_HOOK
92 neue Hooks: std/hooks
MG Mud User88f12472016-06-24 23:31:02 +020093
9408.12.2008, Zesstra