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