add automatic map restart upon all players running out of lives
This commit is contained in:
parent
c140ffe07d
commit
3d627c7530
|
@ -301,6 +301,9 @@ void() trigger_changelevel = {
|
|||
*/
|
||||
|
||||
void() become_spectator = {
|
||||
float not_dead;
|
||||
entity pl;
|
||||
|
||||
self.health = self.max_health;
|
||||
self.armortype = 0;
|
||||
self.armorvalue = 0;
|
||||
|
@ -319,6 +322,16 @@ void() become_spectator = {
|
|||
self.frame = 0;
|
||||
self.modelindex = modelindex_eyes;
|
||||
W_SetCurrentAmmo();
|
||||
|
||||
pl = find(world, classname, "player");
|
||||
while(pl != world) {
|
||||
not_dead += pl.lives;
|
||||
pl = find(pl, classname, "player");
|
||||
}
|
||||
|
||||
if(!not_dead) {
|
||||
all_players_are_dead = time;
|
||||
}
|
||||
};
|
||||
|
||||
void() respawn = {
|
||||
|
@ -339,7 +352,7 @@ void() respawn = {
|
|||
player_respawned = TRUE;
|
||||
PutClientInServer();
|
||||
} else {
|
||||
// restart the entire server
|
||||
// restart the map
|
||||
localcmd("restart\n");
|
||||
}
|
||||
};
|
||||
|
|
|
@ -630,6 +630,7 @@ float sf_lives;
|
|||
float sf_dist_ammo;
|
||||
|
||||
float player_respawned;
|
||||
float all_players_are_dead;
|
||||
|
||||
// fields --------------------------------------------------------------------|
|
||||
|
||||
|
|
|
@ -179,7 +179,8 @@ void() worldspawn = {
|
|||
};
|
||||
|
||||
void() StartFrame = {
|
||||
float temp1flag;
|
||||
entity pl;
|
||||
float temp1flag, delta;
|
||||
|
||||
teamplay = cvar("teamplay");
|
||||
skill = cvar("skill");
|
||||
|
@ -189,6 +190,20 @@ void() StartFrame = {
|
|||
sf_cheats = (temp1flag & SF_CHEATS) != 0;
|
||||
sf_lives = bit_shift_right(temp1flag & SF_LIVES_MSK, SF_LIVES_BEG);
|
||||
sf_dist_ammo = (temp1flag & SF_DIST_AMMO) != 0;
|
||||
|
||||
if(all_players_are_dead) {
|
||||
delta = time - all_players_are_dead;
|
||||
if(delta >= 9.95) {
|
||||
localcmd("restart\n");
|
||||
} else if(rint(delta * 10) == rint(delta) * 10) {
|
||||
pl = find(world, classname, "player");
|
||||
while(pl != world) {
|
||||
centerprint(pl, "Mission failed.\nRestarting in ",
|
||||
ftos(10 - rint(delta)), " seconds");
|
||||
pl = find(pl, classname, "player");
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
2
todo
2
todo
|
@ -10,7 +10,6 @@ rename all functions to be lower_underscore
|
|||
core features:
|
||||
|
||||
add registercvar support
|
||||
restart map after 10 seconds when everyone is dead
|
||||
|
||||
useful features:
|
||||
|
||||
|
@ -35,3 +34,4 @@ distributed ammo
|
|||
enforcers are broken
|
||||
lives counting
|
||||
no friendly fire
|
||||
restart map after 10 seconds when everyone is dead
|
||||
|
|
Loading…
Reference in New Issue
Block a user