/** ** Auto repair a unit if possible ** ** @return true if the unit is repairing, false otherwise */ bool AutoRepair(CUnit &unit) { const int repairRange = unit.Type->DefaultStat.Variables[AUTOREPAIRRANGE_INDEX].Value; if (unit.AutoRepair == false || repairRange == 0) { return false; } CUnit *repairedUnit = UnitToRepairInRange(unit, repairRange); if (repairedUnit == NULL) { return false; } const Vec2i invalidPos(-1, -1); COrder *savedOrder = NULL; if (unit.CanStoreOrder(unit.CurrentOrder())) { savedOrder = unit.CurrentOrder()->Clone(); } //Command* will clear unit.SavedOrder CommandRepair(unit, invalidPos, repairedUnit, FlushCommands); if (savedOrder != NULL) { unit.SavedOrder = savedOrder; } return true; }
/** ** Auto repair a unit if possible ** ** @return true if the unit is repairing, false otherwise */ bool AutoRepair(CUnit &unit) { //Wyrmgus start // const int repairRange = unit.Type->DefaultStat.Variables[AUTOREPAIRRANGE_INDEX].Value; const int repairRange = unit.Variable[AUTOREPAIRRANGE_INDEX].Value; //Wyrmgus end if (unit.AutoRepair == false || repairRange == 0) { return false; } CUnit *repairedUnit = UnitToRepairInRange(unit, repairRange); if (repairedUnit == nullptr) { return false; } const Vec2i invalidPos(-1, -1); COrder *savedOrder = nullptr; if (unit.CanStoreOrder(unit.CurrentOrder())) { savedOrder = unit.CurrentOrder()->Clone(); } //Command* will clear unit.SavedOrder CommandRepair(unit, invalidPos, repairedUnit, FlushCommands, repairedUnit->MapLayer->ID); if (savedOrder != nullptr) { unit.SavedOrder = savedOrder; } return true; }
/** ** Auto repair a unit if possible ** ** @return true if the unit is repairing, false otherwise */ bool AutoRepair(CUnit *unit) { if (unit->AutoRepair && unit->Type->Variable[AUTOREPAIRRANGE_INDEX].Value) { CUnit *repairedUnit = UnitToRepairInRange(unit, unit->Type->Variable[AUTOREPAIRRANGE_INDEX].Value); if (repairedUnit != NoUnitP) { COrder order = *unit->Orders[0]; CommandRepair(unit, -1, -1, repairedUnit, FlushCommands); unit->SavedOrder = order; return true; } } return false; }