| |
| SpellAttack() |
| ************* |
| |
| |
| FUNKTION |
| ======== |
| |
| void SpellAttack(object enemy) |
| |
| |
| ARGUMENTE |
| ========= |
| |
| enemy: Der Feind. |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Diese Funktion wird in jedem Heartbeat eines NPCs ausgefuehrt, |
| falls nicht P_DISABLE_ATTACK gesetzt ist (Paralyse). |
| Standardmaessig tut diese Funktion nichts, aber man kann sie |
| ueberschreiben, damit in jedem Heartbeat Angriffe mit Spells |
| ausgefuehrt werden. |
| |
| Man sollte hierbei ein random() einbauen, damit der NPC nicht |
| in jedem Heartbeat auch wirklich einen Angriff ausfuehrt. |
| Ausserdem sollte man auch fuer eventuelle Ausgaben sorgen. |
| |
| |
| RUECKGABEWERT |
| ============= |
| |
| Keiner. |
| |
| |
| BEMERKUNG |
| ========= |
| |
| Die AttackChats, die mittels SetAttackChats gesetzt werden |
| koennen, macht im Grunde nichts anderes, aber Chats sind halt |
| keine Angriffe. :-) |
| |
| |
| BEISPIELE |
| ========= |
| |
| Im Grunde ist dieses simple Beispiel eine Nachbildung von |
| Attack-Chats und soll dementsprechend nur der Anschauung dienen. |
| |
| void SpellAttack(object enemy) |
| { |
| // mit 80% Wahrscheinlichkeit wird nichts gemacht. |
| switch(random(5)) |
| { |
| case 0: |
| write("Der Ork tritt Dir in den Hintern.\n"); |
| return; |
| case 1: |
| write("Der Ork bruellt: Lebend kommst Du hier nicht raus!\n"); |
| return; |
| case 2: |
| write("Der Ork blutet schon aus mehreren Wunden.\n"); |
| return; |
| case 3: |
| write(knirsch(enemy)); |
| return; |
| default: |
| return; |
| } |
| } |
| |
| string knirsch(object enemy) |
| { |
| if (objectp(enemy)) |
| helm = enemy->QueryArmourByType(AT_HELMET); |
| if (objectp(helm)) |
| { |
| helm->Damage(1); |
| return "Der Ork beschaedigt Deinen Helm!\n"; |
| } |
| else |
| return ""; // keine Meldung |
| } |
| |
| |
| SIEHE AUCH |
| ========== |
| |
| "Attack", "SetAttackChats", /std/npc/combat.c |
| |
| |
| LETZTE AENDERUNG |
| ================ |
| |
| Don, 27.02.2003, 12:50:00 von Hirudo |