{\r
var values = HttpUtility.ParseQueryString(request);\r
var id = int.Parse(values["api_ship_id"]);\r
- int fuel, steal;\r
- _shipInfo.GetStatus(id).CalcMaterialsToRepair(out fuel, out steal);\r
- _materialInfo.SubMaterial(Material.Fuel, fuel);\r
- _materialInfo.SubMaterial(Material.Steal, steal);\r
+ var m = _shipInfo.GetStatus(id).NdockItem;\r
+ _materialInfo.SubMaterial(Material.Fuel, m[0]);\r
+ _materialInfo.SubMaterial(Material.Steal, m[1]);\r
if (int.Parse(values["api_highspeed"]) == 0)\r
return;\r
_shipInfo.RepairShip(id);\r
public int[] OnSlot { get; set; }\r
public ItemStatus[] Slot { get; set; }\r
public ItemStatus SlotEx { get; set; }\r
+ public int NdockTime { get; set; }\r
+ public int[] NdockItem { get; set; }\r
public int LoS { get; set; }\r
public int Firepower { get; set; }\r
public int Torpedo { get; set; }\r
return ratio > 0.75 ? Damage.Minor : ratio > 0.5 ? Damage.Small : ratio > 0.25 ? Damage.Half : Damage.Badly;\r
}\r
\r
- public TimeSpan RepairTime => TimeSpan.FromSeconds(CalcRepairSec(MaxHp - NowHp) + 30);\r
+ public TimeSpan RepairTime => TimeSpan.FromMilliseconds(NdockTime);\r
\r
- public int CalcRepairSec(int damage) => (int)(RepairSecPerHp * damage);\r
+ public TimeSpan RepairTimePerHp => TimeSpan.FromMilliseconds((NdockTime - 30 * 1000.0) / (MaxHp - NowHp));\r
\r
- public double RepairSecPerHp\r
- {\r
- get\r
- {\r
- var weight = Spec.RepairWeight;\r
- var level = Level < 12 ? Level * 10 : Level * 5 + Floor(Sqrt(Level - 11)) * 10 + 50;\r
- return level * weight;\r
- }\r
- }\r
-\r
- public void CalcMaterialsToRepair(out int fuel, out int steal)\r
- {\r
- var damage = MaxHp - NowHp;\r
- fuel = (int)(Spec.FuelMax * 0.2 * 0.16 * damage);\r
- steal = (int)(Spec.FuelMax * 0.2 * 0.3 * damage);\r
- }\r
+ public TimeSpan RepairTimeByDamage(int damage) => TimeSpan.FromTicks(RepairTimePerHp.Ticks * damage);\r
\r
public double EffectiveFirepower\r
{\r
OnSlot = (int[])entry.api_onslot,\r
Slot = ((int[])entry.api_slot).Select(id => new ItemStatus(id)).ToArray(),\r
SlotEx = entry.api_slot_ex() ? new ItemStatus((int)entry.api_slot_ex) : new ItemStatus(0),\r
+ NdockTime = (int)entry.api_ndock_time,\r
+ NdockItem = (int[])entry.api_ndock_item,\r
LoS = (int)entry.api_sakuteki[0],\r
Firepower = (int)entry.api_karyoku[0],\r
Torpedo = (int)entry.api_raisou[0],\r