func calculate(_ ships: [Ship]) -> Double {
- return Double(ships.reduce(0) { $0.0 + $0.1.sakuteki_0 })
+ return Double(ships.reduce(0) { $0 + $1.sakuteki_0 })
}
}
.flatMap { $0 as? SlotItem }
.reduce("") {
- let saku = $0.1.master_slotItem.saku ?? 0
- let ratio = typeRatio($0.1)
- let bounus = levelBounus($0.1)
- let culcSaku = ratio * (Double(saku) + bounus)
+ let saku = $1.master_slotItem.saku ?? 0
+ let ratio = typeRatio($1)
+ let bounus = levelBounus($1)
+ let culcSaku = ratio * (Double(truncating: saku) + bounus)
- return $0.0 + "\n\t\($0.1.name)\tLv.\($0.1.level)\t\t\(saku)\t\(ratio)\t\(bounus)\t\(culcSaku)"
+ return $0 + "\n\t\($1.name)\tLv.\($1.level)\t\t\(saku)\t\(ratio)\t\(bounus)\t\(culcSaku)"
}
print("\(shipData)\(itemNames)\n")
func calculate(_ ships: [Ship]) -> Double {
- Debug.excute(level: .debug) {
+ Debug.excute(level: .full) {
ships.forEach(printShipData)
}
- let saku1 = ships
+ let aliveShips = ships.filter(alive)
+
+ let saku1 = aliveShips
.map(normalSakuteki)
.map(sqrt)
.reduce(0, +)
- let saku2 = ships
+ let saku2 = aliveShips
.map(equipsSakuteki)
.reduce(0, +)
return saku1 + saku2 - saku3 + Double(saku4)
}
+ private func alive(_ ship: Ship) -> Bool {
+
+ if let _ = TemporaryDataStore.default.ensuredGuardEscaped(byShipId: ship.id) {
+
+ return false
+ }
+
+ return true
+ }
+
private func normalSakuteki(_ ship: Ship) -> Double {
let eqSakuteki = ship
let type2 = item.master_slotItem.type_2
- guard let eqType = EquipmentType(rawValue: type2)
- else { return 1 }
+ guard let eqType = EquipmentType(rawValue: type2) else { return 1 }
switch eqType {
case .fighter: return 0.6
let type2 = item.master_slotItem.type_2
- guard let eqType = EquipmentType(rawValue: type2)
- else { return 1 }
+ guard let eqType = EquipmentType(rawValue: type2) else { return 1 }
switch eqType {
case .smallRadar: return 1.25
private func shireiSakuteki() -> Double {
- guard let basic = ServerDataStore.default.basic()
- else { return 0 }
+ guard let basic = ServerDataStore.default.basic() else { return 0 }
return ceil(0.4 * Double(basic.level))
}