blob: 4cfc934d98ce691c50152695c606a98ac00fd5ff [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
2Teamkampf im MorgenGrauen
3=========================
4
5Zum Teamkampf im MG gehoeren zwei Objekte: Das Lebewesen, das im Team ist,
6sowie das Teamobjekt. Ersteres erbt seine Funktionalitaet aus
7
8/std/living/team.c
9
10das Teamobjekt ist ein clone von
11
12/obj/team.c
13
14Allerdings sollte man immer das #define fuer diesen Pfad nutzen, welches
15in /sys/living/team.h definiert ist: TEAM_OBJECT
16
17Darueberhinaus gibt es in diesem Verzeichnis noch den Teammaster.
18
19
20Alle relevanten Funktionen und Properties sind im Teammitglied abrufbar und
21liefern Informationen ueber den Teamkampf.
22
23
24UEBERSICHT ueber die Properties und Funktionen des Teamkampfs
25=============================================================
26
27Properties des Teammitglieds:
28----------------------------
29P_TEAM - Teamobjekt
30P_TEAM_NEWMEMBER - Spieler moechte ins Team hiervon aufgenommen werden.
31P_TEAM_ATTACK_CMD - Angriffsbefehl des Spielers, nicht setzbar.
32P_TEAM_AUTOFOLLOW - Folgewunsch des Spielers, nicht setzbar.
33P_TEAM_WANTED_ROW - Gewuenschte Reihe des Spielers.
34P_TEAM_WIMPY_ROW - Fluchtreihe des Spielers.
35P_TEAM_LEADER - Spieler ist Anfuehrer dieses Teams.
36P_TEAM_ASSOC_MEMBERS - Alle zugeordneten NPCs bzw. der Spieler dem dieser
37 NPC zugeordnet ist.
38P_TEAM_COLORS - Grenzwerte fuer farbige Anzeige.
39
40Funktionen des Teammitglieds:
41----------------------------
42TeamPrefix() - "[Team Teamname] " falls Teammitglied, "" sonst.
43IsTeamLeader() - Test ob Spieler Anfuehrer eines Teams ist.
44IsTeamMove() - Test ob Angriffsbewegung gerade ausgefuehrt wird.
45TeamMembers() - Teammitglieder.
46PresentPosition() - Aktuelle Reihennummer des Spielers.
47PresentTeamPositions() - Reihennummern aller anwesenden Teammitglieder.
48PresentTeamRows() - Reihen aller anwesenden Teammitglieder.
49PresentEnemyRows() - Reihen aller anwesenden Feindteams zusammen.
50SelectNearEnemy() - Waehlt direkt angreifbaren Feind aus.
51SelectFarEnemy() - Waehlt Feind aus hinteren Reihen aus.
52InsertEnemyTeam() - Macht alle Mitglieder von Team des Feindes zu
53 Feinden aller Mitglieder des eigenen Teams.
54AssocMember() - Assoziiert einen HilfsNPC mit einem Spieler.
55DeAssocMember() - Hebt Assoziation zwischen NPC und Spieler auf.
56TeamFlee() - Spieler wird veranlasst in Fluchtreihe zu wechseln.
57
58Funktionen des Teamobjekts:
59--------------------------
60SwapRows() - Spieler tauschen die Reihen
61
62
63BEISPIEL:
64 Man moechte von einem Spieler, welcher sich in einem Team befindet, alle
65 Teammitglieder sowie deren Anzahl ermitteln, die VOR diesem Spieler stehen.
66
67 Im abfragenden Objekt muss man zunaechst die Headerdatei des Teamkampfs
68 includen:
69
70 #include "/sys/living/team.h"
71
72
73 void fun( object pl )
74 {
75 int act_row,all;
76 mixed *rows;
77 object team,*team_members;
78
79 team=pl->QueryProp(P_TEAM); // liefert das Teamobjekt
80
81 act_row=pl->PresentPosition(); // aktuelle Position ermitteln
82
83 team_members=({});
84
85 if ( objectp(team) && (act_row > 1) )
86 {
87 rows=team->PresentRows(ENV(pl)); // die Reihen werden als mixed-array
88 // uebergeben
89
90 foreach ( int i : act_row )
91 team_members+=rows[i]; // die Reihen werden komplett ins
92 // neue Array uebertragen
93 }
94
95 all=sizeof(team_members); // Anzahl der Teammitglieder, die
96 // vor dem Spieler stehen
97 }
98
99
100SIEHE AUCH:
101 Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
102 P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
103 P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
104 Bewegung: IsTeamMove, TeamFlee
105 Mitglieder: IsTeamLeader, TeamMembers
106 Kampf: AssocMember, DeAssocMember, InsertEnemyTeam
107 SelectNearEnemy, SelectFarEnemy
108 Positionen: PresentPosition, PresentRows, PresentEnemyRows,
109 PresentTeamPosition, SwapRows
110 Sonstiges: TeamPrefix, teamkampf_intern
111
112----------------------------------------------------------------------------
113Last modified: 16-08-2010, Gabylon