26 vector redflag_pos, blueflag_pos, yellowflag_pos, pinkflag_pos, neutralflag_pos;
30 int redflag, blueflag, yellowflag, pinkflag, neutralflag;
31 float redflag_statuschange_elapsedtime = 0, blueflag_statuschange_elapsedtime = 0, yellowflag_statuschange_elapsedtime = 0, pinkflag_statuschange_elapsedtime = 0, neutralflag_statuschange_elapsedtime = 0;
34 int stat_items =
STAT(OBJECTIVE_STATUS);
35 float fs, fs2, fs3, size1, size2;
50 mod_active = (redflag || blueflag || yellowflag || pinkflag || neutralflag || (stat_items &
CTF_SHIELDED));
63 #define X(team) MACRO_BEGIN \
64 if (team##flag != team##flag_prevframe) { \
65 team##flag_statuschange_time = time; \
66 team##flag_prevstatus = team##flag_prevframe; \
67 team##flag_prevframe = team##flag; \
69 team##flag_statuschange_elapsedtime = time - team##flag_statuschange_time; \
78 #define X(team, cond) \
79 string team##_icon = string_null, team##_icon_prevstatus = string_null; \
80 int team##_alpha, team##_alpha_prevstatus; \
81 team##_alpha = team##_alpha_prevstatus = 1; \
83 switch (team##flag) { \
84 case 1: team##_icon = "flag_" #team "_taken"; break; \
85 case 2: team##_icon = "flag_" #team "_lost"; break; \
86 case 3: team##_icon = "flag_" #team "_carrying"; team##_alpha = blink(0.85, 0.15, 5); break; \
88 if ((stat_items & CTF_SHIELDED) && (cond)) { \
89 team##_icon = "flag_" #team "_shielded"; \
91 team##_icon = string_null; \
95 switch (team##flag_prevstatus) { \
96 case 1: team##_icon_prevstatus = "flag_" #team "_taken"; break; \
97 case 2: team##_icon_prevstatus = "flag_" #team "_lost"; break; \
98 case 3: team##_icon_prevstatus = "flag_" #team "_carrying"; team##_alpha_prevstatus = blink(0.85, 0.15, 5); break; \
100 if (team##flag == 3) { \
101 team##_icon_prevstatus = "flag_" #team "_carrying"; \
102 } else if((stat_items & CTF_SHIELDED) && (cond)) { \
103 team##_icon_prevstatus = "flag_" #team "_shielded"; \
105 team##_icon_prevstatus = string_null; \
125 red_icon = red_icon_prevstatus = blue_icon = blue_icon_prevstatus = yellow_icon = yellow_icon_prevstatus = pink_icon = pink_icon_prevstatus =
string_null;
127 }
else switch (tcount) {
129 case 2: fs = 0.5; fs2 = 0.5; fs3 = 0.5;
break;
130 case 3: fs = 1; fs2 = 0.35; fs3 = 0.35;
break;
131 case 4: fs = 0.75; fs2 = 0.25; fs3 = 0.5;
break;
134 if (mySize_x > mySize_y) {
150 blueflag_pos = pos +
eX * fs2 * size1;
151 yellowflag_pos = pos -
eX * fs2 * size1;
152 pinkflag_pos = pos +
eX * fs3 * size1;
156 redflag_pos = pos +
eX * fs2 * size1;
158 yellowflag_pos = pos -
eX * fs2 * size1;
159 pinkflag_pos = pos +
eX * fs3 * size1;
163 redflag_pos = pos +
eX * fs3 * size1;
164 blueflag_pos = pos -
eX * fs2 * size1;
165 yellowflag_pos = pos;
166 pinkflag_pos = pos +
eX * fs2 * size1;
170 redflag_pos = pos -
eX * fs2 * size1;
171 blueflag_pos = pos +
eX * fs3 * size1;
172 yellowflag_pos = pos +
eX * fs2 * size1;
177 neutralflag_pos = pos;
178 flag_size = e1 * fs * size1 + e2 * size2;
180 #define X(team) MACRO_BEGIN \
181 f = bound(0, team##flag_statuschange_elapsedtime * 2, 1); \
182 if (team##_icon && ctf_stalemate) \
183 drawpic_aspect_skin(team##flag_pos, "flag_stalemate", flag_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); \
184 if (team##_icon_prevstatus && f < 1) \
185 drawpic_aspect_skin_expanding(team##flag_pos, team##_icon_prevstatus, flag_size, '1 1 1', panel_fg_alpha * team##_alpha_prevstatus, DRAWFLAG_NORMAL, f); \
187 drawpic_aspect_skin(team##flag_pos, team##_icon, flag_size, '1 1 1', panel_fg_alpha * team##_alpha * f, DRAWFLAG_NORMAL); \