| SetAttackChats() |
| |
| FUNKTION: |
| void SetAttackChats(int chance, mixed strs); |
| |
| DEFINIERT IN: |
| /std/npc/chat.c |
| |
| ARGUMENTE: |
| chance |
| Prozentuale Wahrscheinlichkeit einer Ausgabe |
| strs |
| Stringarray mit den Monsterchats |
| |
| BESCHREIBUNG: |
| Der NPC gibt mit der Wahrscheinlichkeit 'chance' einen zufaellig |
| gewaehlten Text aus 'strs' von sich. Die Arrayelemente koennen |
| auch Funktionen ("@@func@@") oder Closures enthalten, die dann |
| aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt. |
| |
| RUECKGABEWERT: |
| keiner |
| |
| BEMERKUNGEN: |
| AttackChats werden nur im Kampf ausgegeben. Ansonsten ist SetChats() |
| zu verwenden. |
| |
| 'chance' wird in der Property P_ACHAT_CHANCE abgelegt. Um einen NPC |
| voruebergehend 'stillzulegen', kann man P_ACHAT_CHANCE auf 0 setzen. |
| |
| Man kann AttackChats nutzen, um Monsterspells zu realisieren. Besser |
| ist es aber, dafuer 'AddSpell' zu verwenden. |
| |
| BEISPIELE: |
| |
| SetAttackChats( 20, |
| ({ "Der Ork tritt Dir in den Hintern.\n", |
| "Der Ork bruellt: Lebend kommst Du hier nicht raus!\n", |
| "Der Ork blutet schon aus mehreren Wunden.\n", |
| "@@knirsch@@" }) ); |
| |
| string knirsch() |
| { |
| object *ruestung, *tmp, helm; |
| |
| ruestung = this_player()->QueryProp(P_ARMOURS); // getragene Ruestung |
| tmp = filter_objects(ruestung, "id", AT_HELMET); |
| // Wenn der Spieler einen Helm traegt, enthaelt 'tmp' jetzt |
| // ein Array mit dem Helmobjekt als einzigem Element |
| if (sizeof(tmp)) helm = tmp[0]; |
| if (objectp(helm)) |
| { |
| // AC nur dann senken, wenn sie nicht schon 0 ist. |
| if (helm->QueryProp(P_AC)>0) { |
| helm->Damage(1); |
| return "Der Ork beschaedigt Deinen Helm!\n"; |
| } |
| return ""; |
| } |
| else |
| return ""; // keine Meldung |
| } |
| |
| SIEHE AUCH: |
| P_ACHAT_CHANCE, SetChats(), /std/npc/chat.c, AddSpell() |
| |
| LETZTE AENDERUNG: |
| Don, 27.12.2007, 16:35:00 von Arathorn |