void Ship::AIOrbit(Body *target, double alt) { AIClearInstructions(); SetFuelReserve((GetFuel() < 0.5) ? GetFuel() / 2 : 0.25); m_curAICmd = new AICmdFlyAround(this, target, alt); }
void Ship::AIDock(SpaceStation *target) { AIClearInstructions(); SetFuelReserve((GetFuel() < 0.5) ? GetFuel() / 2 : 0.25); m_curAICmd = new AICmdDock(this, target); }
void Ship::AIKill(Ship *target) { AIClearInstructions(); SetFuelReserve((GetFuel() < 0.5) ? GetFuel() / 2 : 0.25); m_curAICmd = new AICmdKill(this, target); }
Missile::Missile(const ShipType::Id &shipId, Body *owner, int power)//: Ship(shipId) { if (power < 0) { m_power = 0; if (shipId == ShipType::MISSILE_GUIDED) m_power = 1; if (shipId == ShipType::MISSILE_SMART) m_power = 2; if (shipId == ShipType::MISSILE_NAVAL) m_power = 3; } else m_power = power; m_owner = owner; m_type = &ShipType::types[shipId]; SetMass(m_type->hullMass*1000); SetModel(m_type->modelName.c_str()); SetMassDistributionFromModel(); SetLabel(Lang::MISSILE); Disarm(); SetFuel(1.0); SetFuelReserve(0.0); m_curAICmd = 0; m_aiMessage = AIERROR_NONE; m_decelerating = false; Propulsion::Init( this, GetModel(), m_type->fuelTankMass, m_type->effectiveExhaustVelocity, m_type->linThrust, m_type->angThrust ); }
void Ship::AIFlyTo(Body *target) { AIClearInstructions(); SetFuelReserve((GetFuel() < 0.5) ? GetFuel() / 2 : 0.25); if (target->IsType(Object::SHIP)) { // test code vector3d posoff(-1000.0, 0.0, 1000.0); m_curAICmd = new AICmdFormation(this, static_cast<Ship*>(target), posoff); } else m_curAICmd = new AICmdFlyTo(this, target); }