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