-//#NO AUTOCVARS START
-
-float g_pickup_shells;
-float g_pickup_shells_max;
-float g_pickup_nails;
-float g_pickup_nails_max;
-float g_pickup_rockets;
-float g_pickup_rockets_max;
-float g_pickup_cells;
-float g_pickup_cells_max;
-float g_pickup_plasma;
-float g_pickup_plasma_max;
-float g_pickup_fuel;
-float g_pickup_fuel_jetpack;
-float g_pickup_fuel_max;
-float g_pickup_armorsmall;
-float g_pickup_armorsmall_max;
-float g_pickup_armorsmall_anyway;
-float g_pickup_armormedium;
-float g_pickup_armormedium_max;
-float g_pickup_armormedium_anyway;
-float g_pickup_armorbig;
-float g_pickup_armorbig_max;
-float g_pickup_armorbig_anyway;
-float g_pickup_armorlarge;
-float g_pickup_armorlarge_max;
-float g_pickup_armorlarge_anyway;
-float g_pickup_healthsmall;
-float g_pickup_healthsmall_max;
-float g_pickup_healthsmall_anyway;
-float g_pickup_healthmedium;
-float g_pickup_healthmedium_max;
-float g_pickup_healthmedium_anyway;
-float g_pickup_healthlarge;
-float g_pickup_healthlarge_max;
-float g_pickup_healthlarge_anyway;
-float g_pickup_healthmega;
-float g_pickup_healthmega_max;
-float g_pickup_healthmega_anyway;
-float g_pickup_ammo_anyway;
-float g_pickup_weapons_anyway;
-float g_weaponarena;
-WepSet g_weaponarena_weapons;
-float g_weaponarena_random;
-float g_weaponarena_random_with_blaster;
-string g_weaponarena_list;
-float g_weaponspeedfactor;
-float g_weaponratefactor;
-float g_weapondamagefactor;
-float g_weaponforcefactor;
-float g_weaponspreadfactor;
-
-WepSet start_weapons;
-WepSet start_weapons_default;
-WepSet start_weapons_defaultmask;
-float start_items;
-float start_ammo_shells;
-float start_ammo_nails;
-float start_ammo_rockets;
-float start_ammo_cells;
-float start_ammo_plasma;
-float start_ammo_fuel;
-float start_health;
-float start_armorvalue;
-WepSet warmup_start_weapons;
-WepSet warmup_start_weapons_default;
-WepSet warmup_start_weapons_defaultmask;
-#define WARMUP_START_WEAPONS ((g_warmup_allguns == 1) ? (warmup_start_weapons & (weaponsInMap | start_weapons)) : warmup_start_weapons)
-float warmup_start_ammo_shells;
-float warmup_start_ammo_nails;
-float warmup_start_ammo_rockets;
-float warmup_start_ammo_cells;
-float warmup_start_ammo_plasma;
-float warmup_start_ammo_fuel;
-float warmup_start_health;
-float warmup_start_armorvalue;
-float g_weapon_stay;
-
-float want_weapon(entity weaponinfo, float allguns) // WEAPONTODO: what still needs done?
-{
- var float i = weaponinfo.weapon;
- var float d = 0;
-
- if (!i)
- return 0;
-
- if (g_lms || g_ca || allguns)
- {
- if(weaponinfo.spawnflags & WEP_FLAG_NORMAL)
- d = TRUE;
- else
- d = FALSE;
- }
- else if (g_cts)
- d = (i == WEP_SHOTGUN);
- else if (g_nexball)
- d = 0; // weapon is set a few lines later
- else
- d = !(!weaponinfo.weaponstart);
-
- if(g_grappling_hook) // if possible, redirect off-hand hook to on-hand hook
- d |= (i == WEP_HOOK);
- if(!g_cts && (weaponinfo.spawnflags & WEP_FLAG_MUTATORBLOCKED)) // never default mutator blocked guns
- d = 0;
-
- var float t = weaponinfo.weaponstartoverride;
-
- //print(strcat("want_weapon: ", weaponinfo.netname, " - d: ", ftos(d), ", t: ", ftos(t), ". \n"));
-
- // bit order in t:
- // 1: want or not
- // 2: is default?
- // 4: is set by default?
- if(t < 0)
- t = 4 | (3 * d);
- else
- t |= (2 * d);
-
- return t;
-}
-
-void readplayerstartcvars()
-{
- entity e;
- float i, j, t;
- string s;
-
- // initialize starting values for players
- start_weapons = '0 0 0';
- start_weapons_default = '0 0 0';
- start_weapons_defaultmask = '0 0 0';
- start_items = 0;
- start_ammo_shells = 0;
- start_ammo_nails = 0;
- start_ammo_rockets = 0;
- start_ammo_cells = 0;
- start_ammo_plasma = 0;
- start_health = cvar("g_balance_health_start");
- start_armorvalue = cvar("g_balance_armor_start");
-
- g_weaponarena = 0;
- g_weaponarena_weapons = '0 0 0';
-
- s = cvar_string("g_weaponarena");
- if (s == "0" || s == "")
- {
- if(g_ca)
- s = "most";
- }
-
- if (s == "0" || s == "")
- {
- // no arena
- }
- else if (s == "off")
- {
- // forcibly turn off weaponarena
- }
- else if (s == "all" || s == "1")
- {
- g_weaponarena = 1;
- g_weaponarena_list = "All Weapons";
- for (j = WEP_FIRST; j <= WEP_LAST; ++j)
- {
- e = get_weaponinfo(j);
- if (!(e.spawnflags & WEP_FLAG_MUTATORBLOCKED))
- g_weaponarena_weapons |= WepSet_FromWeapon(j);
- }
- }
- else if (s == "most")
- {
- g_weaponarena = 1;
- g_weaponarena_list = "Most Weapons";
- for (j = WEP_FIRST; j <= WEP_LAST; ++j)
- {
- e = get_weaponinfo(j);
- if (!(e.spawnflags & WEP_FLAG_MUTATORBLOCKED))
- if (e.spawnflags & WEP_FLAG_NORMAL)
- g_weaponarena_weapons |= WepSet_FromWeapon(j);
- }
- }
- else if (s == "none")
- {
- g_weaponarena = 1;
- g_weaponarena_list = "No Weapons";
- }
- else
- {
- g_weaponarena = 1;
- t = tokenize_console(s);
- g_weaponarena_list = "";
- for (i = 0; i < t; ++i)
- {
- s = argv(i);
- for (j = WEP_FIRST; j <= WEP_LAST; ++j)
- {
- e = get_weaponinfo(j);
- if (e.netname == s)
- {
- g_weaponarena_weapons |= WepSet_FromWeapon(j);
- g_weaponarena_list = strcat(g_weaponarena_list, e.message, " & ");
- break;
- }
- }
- if (j > WEP_LAST)
- {
- print("The weapon mutator list contains an unknown weapon ", s, ". Skipped.\n");
- }
- }
- g_weaponarena_list = strzone(substring(g_weaponarena_list, 0, strlen(g_weaponarena_list) - 3));
- }
-
- if(g_weaponarena)
- g_weaponarena_random = cvar("g_weaponarena_random");
- else
- g_weaponarena_random = 0;
- g_weaponarena_random_with_blaster = cvar("g_weaponarena_random_with_blaster");
-
- if (g_weaponarena)
- {
- g_weapon_stay = 0; // incompatible
- start_weapons = g_weaponarena_weapons;
- start_items |= IT_UNLIMITED_AMMO;
- }
- else
- {
- for (i = WEP_FIRST; i <= WEP_LAST; ++i)
- {
- e = get_weaponinfo(i);
- float w = want_weapon(e, FALSE);
- if(w & 1)
- start_weapons |= WepSet_FromWeapon(i);
- if(w & 2)
- start_weapons_default |= WepSet_FromWeapon(i);
- if(w & 4)
- start_weapons_defaultmask |= WepSet_FromWeapon(i);
- }
- }
-
- if(!cvar("g_use_ammunition"))
- start_items |= IT_UNLIMITED_AMMO;
-
- if(start_items & IT_UNLIMITED_WEAPON_AMMO)
- {
- start_ammo_rockets = 999;
- start_ammo_shells = 999;
- start_ammo_cells = 999;
- start_ammo_plasma = 999;
- start_ammo_nails = 999;
- start_ammo_fuel = 999;
- }
- else
- {
- start_ammo_shells = cvar("g_start_ammo_shells");
- start_ammo_nails = cvar("g_start_ammo_nails");
- start_ammo_rockets = cvar("g_start_ammo_rockets");
- start_ammo_cells = cvar("g_start_ammo_cells");
- start_ammo_plasma = cvar("g_start_ammo_plasma");
- start_ammo_fuel = cvar("g_start_ammo_fuel");
- }
-
- if (warmup_stage)
- {
- warmup_start_ammo_shells = start_ammo_shells;
- warmup_start_ammo_nails = start_ammo_nails;
- warmup_start_ammo_rockets = start_ammo_rockets;
- warmup_start_ammo_cells = start_ammo_cells;
- warmup_start_ammo_fuel = start_ammo_fuel;
- warmup_start_health = start_health;
- warmup_start_armorvalue = start_armorvalue;
- warmup_start_weapons = start_weapons;
- warmup_start_weapons_default = start_weapons_default;
- warmup_start_weapons_defaultmask = start_weapons_defaultmask;
-
- if (!g_weaponarena && !g_ca)
- {
- warmup_start_ammo_shells = cvar("g_warmup_start_ammo_shells");
- warmup_start_ammo_cells = cvar("g_warmup_start_ammo_cells");
- warmup_start_ammo_nails = cvar("g_warmup_start_ammo_nails");
- warmup_start_ammo_rockets = cvar("g_warmup_start_ammo_rockets");
- warmup_start_ammo_fuel = cvar("g_warmup_start_ammo_fuel");
- warmup_start_health = cvar("g_warmup_start_health");
- warmup_start_armorvalue = cvar("g_warmup_start_armor");
- warmup_start_weapons = '0 0 0';
- warmup_start_weapons_default = '0 0 0';
- warmup_start_weapons_defaultmask = '0 0 0';
- for (i = WEP_FIRST; i <= WEP_LAST; ++i)
- {
- e = get_weaponinfo(i);
- float w = want_weapon(e, g_warmup_allguns);
- if(w & 1)
- warmup_start_weapons |= WepSet_FromWeapon(i);
- if(w & 2)
- warmup_start_weapons_default |= WepSet_FromWeapon(i);
- if(w & 4)
- warmup_start_weapons_defaultmask |= WepSet_FromWeapon(i);
- }
- }
- }
-
- if (g_jetpack)
- start_items |= IT_JETPACK;
-
- MUTATOR_CALLHOOK(SetStartItems);