Beispiel #1
0
        /// <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]);
            }
        }
Beispiel #2
0
        /// <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);
        }