/// <summary> /// 원정의 대성공 확률 계산 /// </summary> /// <param name="Mission">원정 번호</param> /// <param name="fleet">함대의 함선들</param> /// <returns></returns> public static float CheckGreateSuccessChance(int Mission, Ship[] fleet) { // 계산 기준: http://gall.dcinside.com/board/view/?id=kancolle&no=4514491 int[] drums = new int[] { ExpeditionExtension.CheckDrums(fleet)[0], ExpeditionExtension.CheckRequireDrums(Mission)[0] }; int kira = ExpeditionExtension.KiraShipsCount(fleet); float[] ChanceTable = new float[] { 0, 19, 38, 57, 76, 95, 98, 98.66f, 99.33f }; switch (Mission) { // 드럼 A (100% 확정 가능) case 21: // 북방쥐 수송작전 case 37: // 도쿄급행 if (drums[0] >= drums[1] + 1) { return(Math.Min(100.0f, (kira + 2) * 19.0f)); // 드럼A, 100% 확정 } return(ChanceTable[kira]); // 드럼A, 드럼 충족 X case 38: // 도쿄급행(이) if (drums[0] >= drums[1] + 2) { return(Math.Min(100.0f, (kira + 2) * 19.0f)); // 드럼A, 100% 확정 } return(ChanceTable[kira]); // 드럼A, 드럼 충족 X // 드럼 B (100% 확정 불가능..?) case 24: // 북방항로 해상호위 if (drums[0] >= 4) { return(ChanceTable[kira + 2]); // 드럼B, 확정 없음 } return(ChanceTable[kira]); // 드럼B, 드럼 충족 X case 40: // 수상기 전선 수송 if (drums[0] >= 4) { return(ChanceTable[kira + 2]); // 드럼B, 확정 없음 } return(ChanceTable[kira]); // 드럼B, 드럼 충족 X default: // 그 외 일반 원정들 if (kira < fleet.Length) { return(0); // 반짝이 아닌 함선 포함 } return(ChanceTable[kira]); } }
/// <summary> /// 원정의 드럼통 갯수 조건 만족 여부 /// </summary> /// <param name="Mission">원정 번호</param> /// <param name="fleet">함대의 함선들</param> /// <returns></returns> public static bool CheckDrumPossible(int Mission, Ship[] fleet) { int[] nDrumData = ExpeditionExtension.CheckRequireDrums(Mission); int nTotalDrum = nDrumData[0]; int nHasDrumShip = nDrumData[1]; int[] rDrumData = ExpeditionExtension.CheckDrums(fleet); int rTotalDrum = rDrumData[0]; int rHasDrumShip = rDrumData[1]; if (rTotalDrum >= nTotalDrum && rHasDrumShip >= nHasDrumShip) { return(true); } return(false); }