blob: dfb6d081011f7a4b2bc14a3d06724bde7b1f4ade [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SpellAttack()
Zesstra953f9972017-02-18 15:37:36 +01002*************
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 void SpellAttack(object enemy)
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011ARGUMENTE
12=========
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 enemy: Der Feind.
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017BESCHREIBUNG
18============
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020 Diese Funktion wird in jedem Heartbeat eines NPCs ausgefuehrt,
21 falls nicht P_DISABLE_ATTACK gesetzt ist (Paralyse).
22 Standardmaessig tut diese Funktion nichts, aber man kann sie
23 ueberschreiben, damit in jedem Heartbeat Angriffe mit Spells
24 ausgefuehrt werden.
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstra953f9972017-02-18 15:37:36 +010026 Man sollte hierbei ein random() einbauen, damit der NPC nicht
27 in jedem Heartbeat auch wirklich einen Angriff ausfuehrt.
28 Ausserdem sollte man auch fuer eventuelle Ausgaben sorgen.
MG Mud User88f12472016-06-24 23:31:02 +020029
Zesstra953f9972017-02-18 15:37:36 +010030
31RUECKGABEWERT
32=============
33
34 Keiner.
35
36
37BEMERKUNG
38=========
39
40 Die AttackChats, die mittels SetAttackChats gesetzt werden
41 koennen, macht im Grunde nichts anderes, aber Chats sind halt
42 keine Angriffe. :-)
43
44
45BEISPIELE
46=========
47
48 Im Grunde ist dieses simple Beispiel eine Nachbildung von
49 Attack-Chats und soll dementsprechend nur der Anschauung dienen.
50
51 void SpellAttack(object enemy)
52 {
53 // mit 80% Wahrscheinlichkeit wird nichts gemacht.
54 switch(random(5))
55 {
56 case 0:
57 write("Der Ork tritt Dir in den Hintern.\n");
58 return;
59 case 1:
60 write("Der Ork bruellt: Lebend kommst Du hier nicht raus!\n");
61 return;
62 case 2:
63 write("Der Ork blutet schon aus mehreren Wunden.\n");
64 return;
65 case 3:
66 write(knirsch(enemy));
67 return;
68 default:
69 return;
70 }
71 }
72
73 string knirsch(object enemy)
74 {
75 if (objectp(enemy))
76 helm = enemy->QueryArmourByType(AT_HELMET);
77 if (objectp(helm))
78 {
79 helm->Damage(1);
80 return "Der Ork beschaedigt Deinen Helm!\n";
81 }
82 else
83 return ""; // keine Meldung
84 }
85
86
87SIEHE AUCH
88==========
89
90 "Attack", "SetAttackChats", /std/npc/combat.c
91
92
93LETZTE AENDERUNG
94================
95
96 Don, 27.02.2003, 12:50:00 von Hirudo