void ammo_touch( gentity_t *self, gentity_t *other, trace_t *trace ) { int i, clientcount = 0, count; gentity_t* touchClients[MAX_CLIENTS]; memset(touchClients, 0, sizeof(touchClients)); if( other->client == NULL ) { return; } // flags is for the last entity number that got ammo if ( self->timestamp > level.time ) { return; } self->timestamp = level.time + 1000; for( i = 0; i < level.numConnectedClients; i++ ) { int j = level.sortedClients[i]; if( trap_EntityContactCapsule( g_entities[j].r.absmin, g_entities[j].r.absmax, self ) && G_IsAllowedAmmo( &g_entities[j] ) ) { touchClients[clientcount] = &g_entities[j]; clientcount++; } } if(clientcount == 0) { return; } // Gordon: if low, just give out what's left if(self->health == -9999) { count = clientcount; } else { count = min(clientcount, self->health / (float)self->damage ); } for( i = 0; i < count; i++) { int ammoAdded = qfalse; // self->damage contains the amount of ammo to add ammoAdded = AddMagicAmmo(touchClients[i], self->damage); if (ammoAdded) { // add the ammo pack event (to get sound, etc.) G_AddPredictableEvent( touchClients[i], EV_ITEM_PICKUP, BG_FindItem("Ammo Pack")-bg_itemlist ); if (self->health != -9999) { // reduce the ammount of available ammo by the added clip number self->health -= self->damage; // G_Printf("%i clips left\n", self->health ); } } } }
void ammo_touch(gentity_t *self, gentity_t *other, trace_t *trace) { int i, clientcount = 0; gentity_t *touchClients[MAX_CLIENTS]; // Nico, silent GCC (void)trace; memset(touchClients, 0, sizeof (touchClients)); if (other->client == NULL) { return; } // flags is for the last entity number that got ammo if (self->timestamp > level.time) { return; } self->timestamp = level.time + 1000; for (i = 0; i < level.numConnectedClients; i++) { int j = level.sortedClients[i]; if (trap_EntityContactCapsule(g_entities[j].r.absmin, g_entities[j].r.absmax, self) && G_IsAllowedAmmo(&g_entities[j])) { touchClients[clientcount] = &g_entities[j]; clientcount++; } } if (clientcount == 0) { return; } }