error("This cannot be added at runtime\n");
// mark the guns as ok to use by e.g. impulse 99
- for(int i = WEP_FIRST; i <= WEP_LAST; ++i)
- if(nt_IsNewToy(i))
- get_weaponinfo(i).spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
+ FOREACH(Weapons, it != WEP_Null, LAMBDA(
+ if(nt_IsNewToy(it.m_id))
+ it.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
+ ));
}
MUTATOR_ONROLLBACK_OR_REMOVE
{
- for(int i = WEP_FIRST; i <= WEP_LAST; ++i)
- if(nt_IsNewToy(i))
- get_weaponinfo(i).spawnflags |= WEP_FLAG_MUTATORBLOCKED;
+ FOREACH(Weapons, it != WEP_Null, LAMBDA(
+ if(nt_IsNewToy(it.m_id))
+ it.spawnflags |= WEP_FLAG_MUTATORBLOCKED;
+ ));
}
MUTATOR_ONREMOVE
MUTATOR_HOOKFUNCTION(nt, SetModname)
{
- modname = "NewToys";
- return 0;
+ M_ARGV(0, string) = "NewToys";
}
bool nt_IsNewToy(int w)
// apply those bits that are set by start_weapon_defaultmask
// same for warmup
- float i, j, k, n;
+ float j, n;
WepSet newdefault;
WepSet warmup_newdefault;
newdefault = '0 0 0';
warmup_newdefault = '0 0 0';
- for(i = WEP_FIRST; i <= WEP_LAST; ++i)
- {
- entity e = get_weaponinfo(i);
- if(!e.weapon)
- continue;
+ WepSet seti = '0 0 0';
- n = tokenize_console(nt_GetReplacement(e.netname, autocvar_g_new_toys_autoreplace));
+ FOREACH(Weapons, it != WEP_Null, LAMBDA(
+ seti = it.m_wepset;
+ n = tokenize_console(nt_GetReplacement(it.netname, autocvar_g_new_toys_autoreplace));
for(j = 0; j < n; ++j)
- for(k = WEP_FIRST; k <= WEP_LAST; ++k)
- if(get_weaponinfo(k).netname == argv(j))
+ FOREACH(Weapons, it != WEP_Null, LAMBDA(
+ if(it.netname == argv(j))
{
- if(start_weapons & WepSet_FromWeapon(i))
- newdefault |= WepSet_FromWeapon(k);
- if(warmup_start_weapons & WepSet_FromWeapon(i))
- warmup_newdefault |= WepSet_FromWeapon(k);
+ WepSet setk = it.m_wepset;
+ if(start_weapons & seti) newdefault |= setk;
+ if(warmup_start_weapons & seti) warmup_newdefault |= setk;
}
- }
+ ));
+ ));
newdefault &= start_weapons_defaultmask;
start_weapons &= ~start_weapons_defaultmask;
warmup_newdefault &= warmup_start_weapons_defaultmask;
warmup_start_weapons &= ~warmup_start_weapons_defaultmask;
warmup_start_weapons |= warmup_newdefault;
-
- return 0;
}
MUTATOR_HOOKFUNCTION(nt, SetWeaponreplace)
-{SELFPARAM();
+{
+ entity wep = M_ARGV(0, entity);
+ entity wepinfo = M_ARGV(1, entity);
+ string ret_string = M_ARGV(2, string);
+
// otherwise, we do replace
- if(self.new_toys)
+ if(wep.new_toys)
{
// map defined replacement:
- ret_string = self.new_toys;
+ ret_string = wep.new_toys;
}
else
{
// auto replacement:
- ret_string = nt_GetReplacement(other.netname, autocvar_g_new_toys_autoreplace);
+ ret_string = nt_GetReplacement(wepinfo.netname, autocvar_g_new_toys_autoreplace);
}
// apply regular weaponreplace
ret_string = W_Apply_Weaponreplace(ret_string);
- return 0;
+ M_ARGV(2, string) = ret_string;
}
MUTATOR_HOOKFUNCTION(nt, FilterItem)
-{SELFPARAM();
- if(nt_IsNewToy(self.weapon) && autocvar_g_new_toys_use_pickupsound) {
- self.item_pickupsound = string_null;
- self.item_pickupsound_ent = SND_WEAPONPICKUP_NEW_TOYS;
+{
+ entity item = M_ARGV(0, entity);
+
+ if(nt_IsNewToy(item.weapon) && autocvar_g_new_toys_use_pickupsound) {
+ item.item_pickupsound = string_null;
+ item.item_pickupsound_ent = SND_WEAPONPICKUP_NEW_TOYS;
}
- return 0;
}
#endif