/** * @brief Disables a given active outfit. * * @param p Pilot whose outfit we are disabling. * @return Whether the outfit was actually disabled. */ int pilot_outfitOff( Pilot *p, PilotOutfitSlot *o ) { double c; /* Must not be disabled or cooling down. */ if ((pilot_isDisabled(p)) || (pilot_isFlag(p, PILOT_COOLDOWN))) return 0; if (outfit_isAfterburner( o->outfit )) /* Afterburners */ pilot_afterburnOver( p ); else if (outfit_isBeam( o->outfit )) { /* Beams use stimer to represent minimum time until shutdown. */ o->stimer = -1; } else { c = outfit_cooldown( o->outfit ); if (o->stimer != INFINITY) o->stimer = c - (c * o->stimer / outfit_duration( o->outfit )); else o->stimer = c; o->state = PILOT_OUTFIT_COOLDOWN; } return 1; }
/** * @brief Disables a given active outfit. * * @param p Pilot whose outfit we are disabling. * @return Whether the outfit was actually disabled. */ int pilot_outfitOff( Pilot *p, PilotOutfitSlot *o ) { /* Must not be disabled or cooling down. */ if ((pilot_isDisabled(p)) || (pilot_isFlag(p, PILOT_COOLDOWN))) return 0; if (outfit_isAfterburner( o->outfit )) /* Afterburners */ pilot_afterburnOver( p ); else { o->stimer = outfit_cooldown( o->outfit ); o->state = PILOT_OUTFIT_COOLDOWN; } return 1; }