MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 1 | FindGroup() |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 2 | *********** |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 3 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 4 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 5 | FUNKTION |
| 6 | ======== |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 7 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 8 | object*FindGroup(object pl,int who); |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 9 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 10 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 11 | DEFINIERT IN |
| 12 | ============ |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 13 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 14 | /std/spellbook.c |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 15 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 16 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 17 | ARGUMENTE |
| 18 | ========= |
| 19 | |
| 20 | pl |
| 21 | Lebewesen, von welchem die Freunde oder Feinde in der Umgebung |
| 22 | gefunden werden sollen. |
| 23 | who |
| 24 | Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden |
| 25 | sollen (Konstanten definiert in '/sys/new_skills.h'): |
| 26 | FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden |
| 27 | FG_FRIENDS - (Wert 1) Freunde sollen gefunden werden |
| 28 | FG_ALL - (Wert 0) alle Lebewesen sollen gefunden werden |
| 29 | |
| 30 | |
| 31 | RUeCKGABEWERT |
| 32 | ============= |
| 33 | |
| 34 | Array mit gefundenen Lebewesen |
| 35 | |
| 36 | |
| 37 | BESCHREIBUNG |
| 38 | ============ |
| 39 | |
| 40 | Bei Spells, die sich auf mehrere Gegner auswirken oder bei denen man |
| 41 | per Hand ein Opfer auswaehlen moechte, laesst sich mittels der |
| 42 | Funktion FindGroup() eine Liste von Lebewesen ermitteln, welche in |
| 43 | der Umgebung von <pl> zu finden sind. |
| 44 | Je nachdem, was man denn genau vorhat, kann man sich von der |
| 45 | Funktion freundlich oder feindlich gesinnte Lebewesen heraussuchen |
| 46 | lassen. |
| 47 | Will man die freundlich gesinnten Lebewesen ermitteln, so uebergibt |
| 48 | man in <who> die Konstante FG_FRIENDS, bei feindlich gesinnten die |
| 49 | Konstante FG_ENEMIES, und wenn man alle Lebewesen bekommen moechte |
| 50 | schliesslich FG_ALL. |
| 51 | Bei der Auswahl gelten folgende Regeln: |
| 52 | (1) Lebewesen, mit denen <pl> im Kampf ist, sind grundsaetzlich |
| 53 | feindlich gesinnt. |
| 54 | (2) Teammitglieder von <pl> sind grundsaetzlich freundlich |
| 55 | gesinnt. |
| 56 | (3) Spieler sind gegenueber Spielern freundlich gesinnt, NPCs |
| 57 | gegenueber NPCs. NPCs kann man hierbei mit Hilfe der Property |
| 58 | P_FRIEND den Spielern zuordnen. |
| 59 | (4) Daraus folgt natuerlich, dass Spieler und NPCs grundsaetzlich |
| 60 | eine feindliche Einstellung gegenueber haben, sofern die NPCs |
| 61 | nicht die Property P_FRIEND gesetzt haben |
| 62 | (was standardmaessig natuerlich nicht der Fall ist). |
| 63 | (5) Netztote werden nicht erkannt. |
| 64 | (6) Magier werden nicht erkannt, wenn sie unsichtbar sind. |
| 65 | (7) Ein Magier wird als feindlich gesinnt nur dann erkannt, wenn |
| 66 | <pl> mit ihm im Kampf ist. |
| 67 | (6) Sucht man feindlich gesinnte Lebewesen, so werden die, welche |
| 68 | eine von den Properties P_NO_ATTACK oder P_NO_GLOBAL_ATTACK |
| 69 | gesetzt haben, nicht erkannt. |
| 70 | Die Property P_FRIEND sollte man in NPCs setzen, die dem Spieler |
| 71 | hilfreich beiseite stehen, z.B. vom Spieler beschworene HilfsNPCs. |
| 72 | |
| 73 | |
| 74 | BEISPIELE |
| 75 | ========= |
| 76 | |
| 77 | Wenn man einen Feuerball nach jemandem wirft, so trifft dieser unter |
| 78 | Umstaenden auch andere, wenn er gross genug ist. Man nimmt hierbei |
| 79 | an, dass sich die freundlich gesinnten Lebewesen des Gegners auch |
| 80 | naeher bei ihm befinden als die feindlich gesinnten: |
| 81 | victim->Defend(500,DT_FIRE,([SP_SHOW_DAMAGE:1]),caster); |
| 82 | victimList=FindGroup(victim,FG_FRIENDS); |
| 83 | map_objects(victimList, |
| 84 | "Defend", |
| 85 | 100, |
| 86 | DT_FIRE, |
| 87 | ([SP_SHOW_DAMAGE:1]), |
| 88 | caster); |
| 89 | Hiermit trifft man also auch die Freunde von <victim>. |
| 90 | |
| 91 | |
| 92 | SIEHE AUCH |
| 93 | ========== |
| 94 | |
| 95 | FindGroupN(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK |
| 96 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 97 | Last modified: Mon Jan 28 21:45:00 2002 by Tiamak |