}
void assault_objective_use() {
- if(other.classname == "info_player_deathmatch") // a spawn, a spawn
- return;
-
// activate objective
self.health = 100;
//print("^2Activated objective ", self.targetname, "=", etos(self), "\n");
return;
}
- if(other.assault_sprite.classname == "sprite_waypoint")
+ if(other.assault_sprite)
+ {
WaypointSprite_Disown(other.assault_sprite, waypointsprite_deadlifetime);
+ if(other.classname == "func_assault_destructible")
+ other.sprite = world;
+ }
else
return; // already activated! cannot activate again!
oldself = self;
self = oldself.enemy;
+ if(self.message)
+ {
+ entity player;
+ string s;
+ FOR_EACH_PLAYER(player)
+ {
+ s = strcat(self.message, "\n");
+ centerprint(player, s);
+ }
+ }
+
oldactivator = activator;
activator = oldself;
SUB_UseTargets();
for(ent = world; (ent = find(ent, target, self.targetname)); )
{
if(ent.assault_sprite != world)
+ {
WaypointSprite_Disown(ent.assault_sprite, waypointsprite_deadlifetime);
+ if(ent.classname == "func_assault_destructible")
+ ent.sprite = world;
+ }
- spr = WaypointSprite_SpawnFixed("<placeholder>", 0.5 * (ent.absmin + ent.absmax), ent, assault_sprite);
+ spr = WaypointSprite_SpawnFixed("<placeholder>", 0.5 * (ent.absmin + ent.absmax), ent, assault_sprite, RADARICON_OBJECTIVE, '1 0.5 0');
spr.assault_decreaser = self;
spr.waypointsprite_visible_for_player = assault_decreaser_sprite_visible;
spr.classname = "sprite_waypoint";
WaypointSprite_UpdateRule(spr, assault_attacker_team, SPRITERULE_TEAMPLAY);
if(ent.classname == "func_assault_destructible")
+ {
WaypointSprite_UpdateSprites(spr, "as-defend", "as-destroy", "as-destroy");
+ WaypointSprite_UpdateMaxHealth(spr, ent.max_health);
+ WaypointSprite_UpdateHealth(spr, ent.health);
+ ent.sprite = spr;
+ }
else
WaypointSprite_UpdateSprites(spr, "as-defend", "as-push", "as-push");
- WaypointSprite_UpdateTeamRadar(spr, RADARICON_OBJECTIVE, '1 0.5 0');
}
}
return;
}
self.spawnflags = 3;
+ self.classname = "func_assault_destructible";
+ self.takedamage = TRUE;
+ self.bot_attack = TRUE;
if(assault_attacker_team == COLOR_TEAM1) {
self.team = COLOR_TEAM2;
} else {
activator = self;
SUB_UseTargets();
- /*
+
#ifdef TTURRETS_ENABLED
-entity ent,oldself;
+ entity ent, oldself;
//(Re)spawn all turrets
oldself = self;
ent = find(world, classname, "turret_main");
while(ent) {
- // Swap turret teams
- if(ent.team == COLOR_TEAM1)
- ent.team = COLOR_TEAM2;
- else
- ent.team = COLOR_TEAM1;
+ // Swap turret teams
+ if(ent.team == COLOR_TEAM1)
+ ent.team = COLOR_TEAM2;
+ else
+ ent.team = COLOR_TEAM1;
- self = ent;
+ self = ent;
- // Dubbles as teamchange
- turret_stdproc_respawn();
- //ent.turret_spawnfunc();
+ // Dubbles as teamchange
+ turret_stdproc_respawn();
- ent = find(ent, classname, "turret_main");
+ ent = find(ent, classname, "turret_main");
}
self = oldself;
#endif
-*/
+
}
// trigger new round
// reset objectives, toggle spawnpoints, reset triggers, ...
-void assault_new_round() {
+void vehicles_clearrturn();
+void vehicles_spawn();
+void assault_new_round()
+{
+ entity oldself;
//bprint("ASSAULT: new round\n");
+ oldself = self;
+ // Eject players from vehicles
+ FOR_EACH_PLAYER(self)
+ {
+ if(self.vehicle)
+ vehicles_exit(VHEF_RELESE);
+ }
+
+ self = findchainflags(vehicle_flags, VHF_ISVEHICLE);
+ while(self)
+ {
+ vehicles_clearrturn();
+ vehicles_spawn();
+ self = self.chain;
+ }
+
+ self = oldself;
+
// up round counter
self.winning = self.winning + 1;