allow_mutatorblocked = M_ARGV(3, bool);
if(allguns)
- d = boolean(weaponinfo.spawnflags & WEP_FLAG_NORMAL);
+ d = boolean((weaponinfo.spawnflags & WEP_FLAG_NORMAL) && !(weaponinfo.spawnflags & WEP_FLAG_HIDDEN));
else if(!mutator_returnvalue)
d = !(!weaponinfo.weaponstart);
return t;
}
+void weaponarena_available_update(entity this)
+{
+ FOREACH(Weapons, it != WEP_Null, {
+ // if no weapons are available, just fall back to normal weapons (most weapons arena)
+ bool wep_available = ((weaponsInMapAll) ? !!(weaponsInMapAll & WepSet_FromWeapon(it)) : (it.spawnflags & WEP_FLAG_NORMAL));
+ if(wep_available && !(it.spawnflags & WEP_FLAG_MUTATORBLOCKED) && !(it.spawnflags & WEP_FLAG_HIDDEN))
+ g_weaponarena_weapons |= WepSet_FromWeapon(it);
+ });
+ start_weapons = g_weaponarena_weapons;
+ if(warmup_stage)
+ warmup_start_weapons = start_weapons;
+}
+
void readplayerstartcvars()
{
float i, t;
g_weaponarena = 1;
g_weaponarena_list = "Most Weapons";
FOREACH(Weapons, it != WEP_Null, {
- if(!(it.spawnflags & WEP_FLAG_MUTATORBLOCKED))
- if(it.spawnflags & WEP_FLAG_NORMAL)
- g_weaponarena_weapons |= (it.m_wepset);
+ if(!(it.spawnflags & WEP_FLAG_MUTATORBLOCKED) && (it.spawnflags & WEP_FLAG_NORMAL) && !(it.spawnflags & WEP_FLAG_HIDDEN))
+ g_weaponarena_weapons |= (it.m_wepset);
+ });
+ }
+ else if (s == "available")
+ {
+ g_weaponarena = 2;
+ g_weaponarena_list = "Most Weapons";
+ // include weapons the player would start with
+ FOREACH(Weapons, it != WEP_Null, {
+ int w = want_weapon(it, false);
+ if(w & 1)
+ g_weaponarena_weapons |= (it.m_wepset);
});
+ InitializeEntity(NULL, weaponarena_available_update, INITPRIO_FINDTARGET);
}
else if (s == "none")
{