/** * @brief Updates the pilot's weapon sets. * * @param p Pilot to update. */ void pilot_weapSetUpdate( Pilot* p ) { PilotWeaponSet *ws; int i; /* Must not be doing hyperspace procedures. */ if (pilot_isFlag( p, PILOT_HYP_BEGIN)) return; for (i=0; i<PILOT_WEAPON_SETS; i++) { ws = &p->weapon_sets[i]; if (ws->slots == NULL) continue; /* Weapons must get "fired" every turn. */ if (ws->type == WEAPSET_TYPE_WEAPON) { if (ws->active) pilot_weapSetFire( p, ws, -1 ); } } }
/** * @brief Makes the pilot shoot. * * @param p The pilot which is shooting. * @param level Level of the shot. * @return The number of shots fired. */ int pilot_shoot( Pilot* p, int level ) { PilotWeaponSet *ws; int ret; /* Get active set. */ ws = pilot_weapSet( p, p->active_set ); /* Fire weapons. */ if (ws->type == WEAPSET_TYPE_CHANGE) { /* Must be a change set or a weaponset. */ ret = pilot_weapSetFire( p, ws, level ); /* Firing weapons aborts active cooldown. */ if (pilot_isFlag(p, PILOT_COOLDOWN) && ret) pilot_cooldownEnd(p, NULL); return ret; } return 0; }