//------------------------------------------------------- int Pickup_Ammo (gentity_t *ent, gentity_t *other) { int quantity; if ( ent->count ) { quantity = ent->count; } else { quantity = ent->item->quantity; } Add_Ammo2 (other, ent->item->giTag, quantity); return 30; }
void ammo_think( gentity_t *ent ) { int dif; // Still has ammo to give if (ent->count > 0 && ent->enemy ) { dif = ammoData[AMMO_BLASTER].max - ent->enemy->client->ps.ammo[AMMO_BLASTER]; if (dif > 2 ) { dif= 2; } else if (dif < 0) { dif= 0; } if (ent->count < dif) // Can't give more than count { dif = ent->count; } // Give player ammo if (Add_Ammo2(ent->enemy,AMMO_BLASTER,dif) && (dif!=0)) { ent->count-=dif; ent->nextthink = level.time + 10; } else // User has taken all ammo he can hold { ent->use = ammo_use; ent->think = NULL; } } if (ent->count < 1) { ammo_shutdown(ent); } }
//------------------------------------------------------- void Add_Ammo (gentity_t *ent, int weapon, int count) { Add_Ammo2(ent,weaponData[weapon].ammoIndex,count); }