set g_waypointeditor 0
set bot_ignore_bots 0 "When set, bots don't shoot at other bots"
set bot_join_empty 0 "When set, bots also play if no player has joined the server"
-set bot_vs_human 0 "Bots and humans play in different teams when set. positive values to make an all-bot blue team, set to negative values to make an all-bot red team, the absolute value is the ratio bots vs humans (1 for equal count)"
+set bot_vs_human 0 "Bots and humans play in different teams when set. positive values to make an all-bot blue team, set to negative values to make an all-bot red team, the absolute value is the ratio bots vs humans (1 for equal count). Changes will be correctly applied only from the next game"
alias g_waypointeditor_spawn "impulse 103"
alias g_waypointeditor_remove "impulse 104"
--- /dev/null
+0 36 15.000000 0 // dieone
+36 20 15.000000 0 // dietwo
+56 15 15.000000 1 // draw
+71 20 15.000000 1 // duck
+91 21 30.000000 1 // duckwalk
+112 16 15.000000 0 // duckjump
+128 15 5.000000 1 // duckidle
+143 41 5.000000 1 // idle
+184 21 25.000000 0 // jump
+205 15 15.000000 0 // painone
+220 17 15.000000 0 // paintwo
+237 3 15.000000 1 // shoot
+240 21 15.000000 1 // taunt
+261 21 35.000000 1 // run
+282 21 35.000000 1 // runbackwards
+303 21 35.000000 1 // strafeleft
+324 21 35.000000 1 // straferight
+345 2 15.000000 0 // deadone
+347 2 15.000000 0 // deadtwo
+349 21 35.000000 1 // forwardright
+370 21 35.000000 1 // forwardleft
+391 21 35.000000 1 // backright
+412 21 30.000000 1 // backleft
--- /dev/null
+name Erebus
+species human
+sex Male
+weight 105
+age 26
+
+Heavyweight Xonotic Solider
--- /dev/null
+0 36 15.000000 0 // dieone
+36 20 15.000000 0 // dietwo
+56 15 15.000000 1 // draw
+71 20 15.000000 1 // duck
+91 21 30.000000 1 // duckwalk
+112 16 15.000000 0 // duckjump
+128 15 5.000000 1 // duckidle
+143 41 5.000000 1 // idle
+184 21 25.000000 0 // jump
+205 15 15.000000 0 // painone
+220 17 15.000000 0 // paintwo
+237 3 15.000000 1 // shoot
+240 21 15.000000 1 // taunt
+261 21 35.000000 1 // run
+282 21 35.000000 1 // runbackwards
+303 21 35.000000 1 // strafeleft
+324 21 35.000000 1 // straferight
+345 2 15.000000 0 // deadone
+347 2 15.000000 0 // deadtwo
+349 21 35.000000 1 // forwardright
+370 21 35.000000 1 // forwardleft
+391 21 35.000000 1 // backright
+412 21 30.000000 1 // backleft
--- /dev/null
+name Nyx
+species human
+sex Female
+weight 100
+age 24
+
+Heavyweight Xonotic Soldier
float warmup;
float allowed_to_spawn;
float player_cnt;
+float required_ca_players;
.float caplayer;
void PutObserverInServer();
lms_next_place = player_count;
race_ReadyRestart();
-
+
for(self = world; (self = nextent(self)); )
if(clienttype(self) == CLIENTTYPE_NOTACLIENT)
{
allowed_to_spawn = 0;
- if(g_ca && (player_cnt < 2 || inWarmupStage))
+ if(g_ca && (player_cnt < required_ca_players || inWarmupStage))
allowed_to_spawn = 1;
msg = NEWLINES;
}
}
- if(player_cnt < 2 && (redspawned && bluespawned)) {
+ required_ca_players = max(2, fabs(cvar("bot_vs_human") + 1));
+
+ if(player_cnt < required_ca_players && (redspawned && bluespawned)) {
reset_map(TRUE);
}
- else if(player_cnt < 2) {
+ else if(player_cnt < required_ca_players) {
FOR_EACH_CLIENT(self)
if(self.classname == "player")
- centerprint(self, strcat("^1Need at least 2 players to play CA", "^7\n"));
+ centerprint(self, strcat("^1Need at least 1 player in each team to play CA", "^7\n"));
allowed_to_spawn = 1;
return;
FOR_EACH_REALCLIENT(head)
{
- if(head.classname == "player" || g_lms || g_arena)
+ if(head.classname == "player" || g_lms || g_arena || g_ca)
++activerealplayers;
++realplayers;
}
else
Violence_GibSplash_At(hitloc, force, 2, bound(0, damage, 200) / 16, self, attacker);
- if((g_arena && numspawned < 2) || (g_ca && player_cnt < 2) && !inWarmupStage)
+ if((g_arena && numspawned < 2) || (g_ca && player_cnt < required_ca_players) && !inWarmupStage)
return;
if (!g_minstagib)
print_to(e, "^1Your vote is empty. See 'vhelp' for more info.");
} else if(e
&& time < e.vote_next) {
- print_to(e, strcat("^1You have to wait ^2", ftos(e.vote_next - time), "^1 seconds before you can again call a vote."));
+ print_to(e, strcat("^1You have to wait ^2", ftos(ceil(e.vote_next - time)), "^1 seconds before you can again call a vote."));
} else if(VoteCheckNasty(vote)) {
print_to(e, "Syntax error in command. See 'vhelp' for more info.");
} else if(RemapVote(vote, "vcall", e)) {
--- /dev/null
+morph/leaves3
+{
+cull none
+ qer_editorimage leaves6.tga
+ qer_trans 0.6
+ surfaceparm trans
+// surfaceparm nolightmap
+ surfaceparm alphashadow
+ deformVertexes autosprite
+ q3map_vertexScale 1
+ deformVertexes wave 128 sin 0 1 0 0.4
+ {
+ map leaves6.tga
+ alphaFunc GT0
+ rgbGen vertex
+ }
+}
+
+grass02
+{
+ distancecull 256 1024 0.4
+ cull none
+ qer_editorimage grass2.tga
+ qer_trans 0.2
+ surfaceparm nolightmap
+ surfaceparm trans
+ q3map_vertexScale 1
+ deformVertexes autosprite
+ deformVertexes wave 128 sin 0 1 0 0.1
+ {
+ map grass2.tga
+ alphaFunc GT0
+ rgbGen vertex
+ }
+}
+
+leaves4
+{
+cull none
+ qer_editorimage leaves7.tga
+ qer_trans 0.6
+ deformVertexes autosprite
+ surfaceparm nolightmap
+ surfaceparm trans
+ q3map_vertexScale 1
+ deformVertexes wave 128 sin 0 1 0 0.5
+ {
+ map leaves7.tga
+ alphaFunc GT0
+ rgbGen vertex
+ }
+}
+
+e8teamcolor
+ {
+ qer_editorimage morphed/e8support02c_shirt.jpg
+ map morphed/e8support02c.tga
+ {
+ map $lightmap
+ rgbGen identity
+ }
+ }