Item_ScheduleRespawnIn(e, max(0, game_starttime - time) + ((e.respawntimestart) ? e.respawntimestart : ITEM_RESPAWNTIME_INITIAL(e)));
}
+void GiveRandomWeapons(entity receiver, int num_weapons, string weapon_names,
+ float shells, float bullets, float rockets, float cells, float plasma)
+{
+ if (num_weapons == 0)
+ {
+ return;
+ }
+ int num_potential_weapons = tokenize_console(weapon_names);
+ for (int i = 0; i < num_weapons; ++i)
+ {
+ RandomSelection_Init();
+ for (int j = 0; j < num_potential_weapons; ++j)
+ {
+ string weapon = argv(j);
+ FOREACH(Weapons, it != WEP_Null,
+ {
+ // Finding a weapon which player doesn't have.
+ if (!(receiver.weapons & it.m_wepset) && (it.netname == weapon))
+ {
+ RandomSelection_AddEnt(it, 1, 1);
+ break;
+ }
+ });
+ }
+ if (RandomSelection_chosen_ent == NULL)
+ {
+ return;
+ }
+ receiver.weapons |= RandomSelection_chosen_ent.m_wepset;
+ if (RandomSelection_chosen_ent.ammo_type == RESOURCE_NONE)
+ {
+ continue;
+ }
+ if (GetResourceAmount(receiver,
+ RandomSelection_chosen_ent.ammo_type) != 0)
+ {
+ continue;
+ }
+ switch (RandomSelection_chosen_ent.ammo_type)
+ {
+ case (RESOURCE_SHELLS):
+ {
+ GiveResource(receiver, RESOURCE_SHELLS, shells);
+ break;
+ }
+ case (RESOURCE_BULLETS):
+ {
+ GiveResource(receiver, RESOURCE_BULLETS, bullets);
+ break;
+ }
+ case (RESOURCE_ROCKETS):
+ {
+ GiveResource(receiver, RESOURCE_ROCKETS, rockets);
+ break;
+ }
+ case (RESOURCE_CELLS):
+ {
+ GiveResource(receiver, RESOURCE_CELLS, cells);
+ break;
+ }
+ case (RESOURCE_PLASMA):
+ {
+ GiveResource(receiver, RESOURCE_PLASMA, plasma);
+ break;
+ }
+ }
+ }
+}
+
float Item_GiveAmmoTo(entity item, entity player, int resource_type, float ammomax)
{
float amount = GetResourceAmount(item, resource_type);
{
return false;
}
- if ((player_amount + amount) > ammomax)
- {
- amount = ammomax - player_amount;
- }
- GiveResource(player, resource_type, amount);
+ GiveResourceWithLimit(player, resource_type, amount, ammomax);
return true;
}
if (g_weapon_stay != 2)
{
return false;
}
- float mi = min(amount, ammomax);
- if (player_amount < mi)
- {
- GiveResource(player, resource_type, mi - player_amount);
- }
+ GiveResourceWithLimit(player, resource_type, amount, min(amount, ammomax));
return true;
}
if(!(player.weapons & (it.m_wepset)))
continue;
- switch(it.ammo_field)
+ switch(it.ammo_type)
{
- case ammo_shells: need_shells = true; break;
- case ammo_nails: need_nails = true; break;
- case ammo_rockets: need_rockets = true; break;
- case ammo_cells: need_cells = true; break;
- case ammo_plasma: need_plasma = true; break;
- case ammo_fuel: need_fuel = true; break;
+ case RESOURCE_SHELLS: need_shells = true; break;
+ case RESOURCE_BULLETS: need_nails = true; break;
+ case RESOURCE_ROCKETS: need_rockets = true; break;
+ case RESOURCE_CELLS: need_cells = true; break;
+ case RESOURCE_PLASMA: need_plasma = true; break;
+ case RESOURCE_FUEL: need_fuel = true; break;
}
});
rating = item.bot_pickupbasevalue;