rendered paste body void Fish() {
SetProgressMaxValue(0);
Cast();
System.Threading.Thread.Sleep(2000);
if ((int)FFACE.Player.Status() != 50)
return;
SetStatus("Waiting for bite", false);
while (true) {
System.Threading.Thread.Sleep(100);
//nothing caughts
if (FFACE.Player.Status() == PlayerStatus.LostCatch) {
SetStatus("No fish caught", true);
consecutiveNoCatchCount++;
SetNoCatches();
FishLog.noCatchCount++;
UpdateLog();
WaitUntil(PlayerStatus.Standing);
break;
}
//fish on the hook, fight if its the accepted fish, release otherwise
if (FFACE.Player.Status() == PlayerStatus.FishBite) {
consecutiveNoCatchCount = 0;
string ID1 = FFACE.Fishing.ID1().ToString();
string ID2 = FFACE.Fishing.ID2().ToString();
string ID3 = FFACE.Fishing.ID3().ToString();
string ID4 = FFACE.Fishing.ID4().ToString();
bool isNewFish;
FishResult fishFightResult;
if (FishDB.FishAccepted(out currentFish, out isNewFish, cbCatchUnknown.Checked, lblRod.Text, lblZone.Text, lblBait.Text, ID1, ID2, ID3, ID4)) {
fishFightResult = FightFish();
currentFish = GetRealFishName(currentFish);
if (isNewFish && (currentFish != "Unknown"))
//add the fish to the database
FishDB.AddNewFish(ref currentFish, lblZone.Text, lblBait.Text, lblRod.Text, ID1, ID2, ID3, ID4, false);
switch (fishFightResult) {
case FishResult.Success:
FishLog.AddFish(FishLog.caughtFishes, currentFish);
break;
case FishResult.LackSkill:
FishLog.AddFish(FishLog.lackSkillFishes, currentFish);
break;
case FishResult.InventoryProblem:
SetStatus("Inventory might be full", true);
Stop();
break;
case FishResult.RodBreak:
FishLog.AddFish(FishLog.rodBreakFishes, currentFish);
SetStatus("Rod broken", true);
Stop();
break;
case FishResult.Monster:
SetStatus("Monster caught", true);
Stop();
break;
case FishResult.LineBreak:
FishLog.AddFish(FishLog.lineBreakFishes, currentFish);
break;
case FishResult.TooSmall:
FishLog.AddFish(FishLog.tooSmallFishes, currentFish);
break;
case FishResult.Released:
FishLog.AddFish(FishLog.releasedFishes, currentFish);
break;
}
}
else {
decimal fakeFightInterval = System.Math.Round((decimal)rnd.NextDouble() * 7, 1);
SetStatus(string.Format("Fake fighting {0} for {1}s", currentFish, fakeFightInterval), false);
if (cbFakeFighting.Checked)
Thread.Sleep((int)fakeFightInterval * 1000);
SetNoCatches();
FishLog.AddFish(FishLog.releasedFishes, currentFish);
Release();
}
break;
}
}
WaitUntil(PlayerStatus.Standing);
}