public byte SetKeeperDirect(byte pBotGrade) { if (!Ag.mgIsKick) { return(0); } System.Random ranObj = new System.Random(); byte rslt = mDirectObj.PickWideAndNarrowRight(); int dongPercent = 5; switch (pBotGrade) { case 1: rslt = mDirectObj.PickWideRandomDirect(pApplyWidth: false); // Just pick from wide area..' dongPercent = 30; break; case 2: dongPercent = 15; break; case 3: if (ranObj.GetRandomTrue(pTruePercent: 50)) { rslt = Ag.mgDirection; } dongPercent = 2; break; case 4: // more than 70 % defence success... know the enemy... if (ranObj.GetRandomTrue(pTruePercent: 70)) { rslt = Ag.mgDirection; } dongPercent = 1; break; } if (ranObj.GetRandomTrue(pTruePercent: dongPercent)) { rslt = 0; } if (rslt == 5) { rslt = 0; } return(rslt); }
public byte SetKickerDirect(byte pBotGrade) { if (Ag.mgIsKick) { return(0); } System.Random ranObj = new System.Random(); byte rslt = 0; int dongPercent = 5; switch (pBotGrade) { case 1: rslt = mDirectObj.PickWideRandomDirect(pApplyWidth: false); // Just pick from wide area..' dongPercent = 30; break; case 2: rslt = mDirectObj.PickWideAndNarrowRight(); dongPercent = 15; break; case 3: rslt = mDirectObj.PickRandomKick(); dongPercent = 5; break; case 4: rslt = mDirectObj.PickRandomKick(); dongPercent = 1; break; } if (ranObj.GetRandomTrue(pTruePercent: dongPercent)) { rslt = 0; } return(rslt); }
// _////////////////////////////////////////////////_ _____ ... _____ xxx _____ public bool Result(AmCard pCurCard = null) { Ag.LogStartWithStr(2, " AmServer :: Result "); (" " + Ag.mgIsKick.ShowBool(" My Roll : ", "Kick", "Keep") + " Bot Grade >>> " + maiGradeOfBot + " <<< ").HtLog(); (" " + pCurCard.WAS.isKicker.ShowBool(" CurCard :", "Kicker", "Keeper") + " <<< ").HtLog(); (" Kick Order : " + pCurCard.WAS.kickOrder + " polygon : " + pCurCard.WAS.info).HtLog(); pCurCard.mDirectObj.ShowMyself(); // Generate Enemy Direction if (Ag.mgIsKick) { // Apply my Info to enem direction.. Ag.mgEnemDirec = pCurCard.SetKeeperDirect(maiGradeOfBot); //Ag.mgEnemDirec = Ag.mySelf.mCurPlayer.SetKeeperDirect (maiGradeOfBot); //Ag.mySelf.mCurPlayer.mDirectObj.GetWideRandomDirect( pApplyWidth:false ); } else { Ag.mgEnemDirec = pCurCard.SetKickerDirect(maiGradeOfBot); //Ag.mgEnemDirec = Ag.myEnem.mCurPlayer.SetKickerDirect (maiGradeOfBot); // Ag.myEnem.mCurPlayer.mDirectObj.GetWideRandomDirect( true ); } Ag.LogIntenseWord(" AmServer :: Result >>>>> >>>>> " + Ag.mgIsKick.ShowBool(" I am ", " Kicker ", " Keeper ") + " Ag.mgEnemDirec " + Ag.mgEnemDirec); // Generate Enemy Skill System.Random rObj = new System.Random(); int great = 0, ddong = 0; switch (maiGradeOfBot) { case 0: great = 20; break; case 1: ddong = 20; break; case 2: ddong = 10; great = 10; break; case 3: great = 20; break; case 4: great = 40; break; } if (rObj.GetRandomTrue(great)) { Ag.mgEnemSkill = 2; } else { Ag.mgEnemSkill = 1; } // if (!Ag.mgIsKick && rObj.GetRandomTrue (perfect)) // Ag.mgEnemSkill = 3; if (rObj.GetRandomTrue(ddong)) { Ag.mgEnemSkill = 0; } Ag.LogIntenseWord(" AmServer :: Result Dir / Skl :: " + Ag.mgEnemDirec + " / " + Ag.mgEnemSkill); return(true); // if (Ag.mgIsKick) { // Ag.mgEnemDirec = 1; // Ag.mgEnemSkill = 1; // } // // Debugging Log ... // Ag.LogString (" AmServer :: Result Enemy Direct >> " + Ag.mgEnemDirec + " Enemy Skill >> " + Ag.mgEnemSkill); // // // Kick Result Matrix ... 1: Goul, 2: No goul, 3: Special case.. // byte[,,] resultMat = new byte[2, 3, 3] { { { 2, 1, 1 }, { 2, 2, 1 }, { 2, 2, 2 } }, // Same Direction // { Miss } { Normal } { Miracle } // { { 2, 1, 1 }, { 2, 1, 1 }, { 2, 3, 1 } } // }; // Different Direction // // Set Variables... // byte kickDir, kickSkl, keepDir, keepSkl; // if (Ag.mgIsKick) { // kickDir = Ag.mgDirection; // kickSkl = Ag.mgSkill; // keepDir = Ag.mgEnemDirec; // keepSkl = Ag.mgEnemSkill; // Ag.LogString (" AmServer :: Result myDir kick Dir / Skl : " + kickDir + " / " + kickSkl + " enDir keep Dir / Skl : " + keepDir + " / " + keepSkl); // // } else { // keepDir = Ag.mgDirection; // keepSkl = Ag.mgSkill; // kickDir = Ag.mgEnemDirec; // kickSkl = Ag.mgEnemSkill; // Ag.LogString (" AmServer :: Result myDir keep Dir / Skl : " + keepDir + " / " + keepSkl + " enDir kick Dir / Skl : " + kickDir + " / " + kickSkl); // } // // // Kicker's DDong ball Case .... No goul... // if (kickDir == 0 || kickSkl == 0) // return ResultSub (2); // // // Kicker's Perfect Kick ... Always Goul // if (kickSkl == 3) // return ResultSub (1); // // // Check Panenka Kick // if (kickDir == 5) { // skill is 1 ... // if (keepDir != 0 && keepSkl == 2) // return ResultSub (1); // Goul.. // else // return ResultSub (2); // No Goul.. // } // // // Use Kick Result Matrix ... // int nRes = resultMat [kickDir == keepDir ? 0 : 1, keepSkl, kickSkl]; // // if (nRes == 3) { // if (kickDir % 2 == keepDir % 2) // nRes = 2; // No goul // else // nRes = 1; // Goul in. // } // if (kickDir == 0) // nRes = 2; // kick fail.. // // Ag.LogNewLine (4); // return ResultSub (nRes); }