protected virtual StageInfo ForwardStage(string areaId) { var values = new Dictionary <string, object> { { "areaId", areaId } }; var result = _client.PostXHR("http://astrum.amebagames.com/_/stage", values); var stage = JsonConvert.DeserializeObject <StageInfo>(result); InfoPrinter.PrintStageInfo(stage, _client.ViewModel); var feverBefore = _client.ViewModel.Fever; InfoUpdater.UpdateStageView(stage, _client.ViewModel); if (_client.ViewModel.Fever && feverBefore != _client.ViewModel.Fever) { _client.RaiseNotificationEvent("Fever start", AstrumClient.SECOND * 60); } _client.DelayShort(); return(stage); }
public void Run() { _client.Access("breeding"); var breedingInfo = BreedingInfo(); var stage = EnterBreedingStage(); var areaId = stage._id; while (_client.ViewModel.IsRunning) { if (stage.isBossStage) { BreedingAreaBossBattle(areaId); return; } else if (stage.stageClear && stage.nextStage.isBossStage) { stage = ForwardBreedingStage(areaId); _client.RaiseNotificationEvent("area boss", AstrumClient.DELAY_LONG); BreedingAreaBossBattle(areaId); return; } else { var breedingRaidId = stage.status.breeding._id; if (breedingRaidId != null) { _client.ViewModel.IsBreedingRaid = true; if (_client.ViewModel.CanFullAttackForEvent) { BreedingRaid(breedingRaidId); return; } } else { _client.ViewModel.IsBreedingRaid = false; } bool isBpFull = _client.ViewModel.BpValue >= AstrumClient.BP_FULL; bool isFever = _client.ViewModel.Fever; if (!isBpFull && !isFever) { _client.ViewModel.IsStaminaEmpty = true; } else { _client.ViewModel.IsStaminaEmpty = false; } if (_client.ViewModel.IsStaminaEmpty) { bool staminaGreaterThanKeep = _client.ViewModel.StaminaValue >= _client.ViewModel.KeepStamina; bool staminaGreaterThanExp = _client.ViewModel.StaminaValue >= (_client.ViewModel.ExpMax - _client.ViewModel.ExpValue); if (staminaGreaterThanKeep || staminaGreaterThanExp) { _client.ViewModel.IsStaminaEmpty = false; } else { return; } } if (stage.staminaEmpty) { if (stage.items != null && _client.ViewModel.ExpMax - _client.ViewModel.ExpValue > 100) { var item = stage.items.Find(e => AstrumClient.INSTANT_HALF_STAMINA.Equals(e._id)); if (item.stock > _client.ViewModel.MinStaminaStock && _client.ViewModel.Fever) { _client.UseItem(AstrumClient.ITEM_STAMINA, AstrumClient.INSTANT_HALF_STAMINA, 1); return; } else { _client.ViewModel.IsStaminaEmpty = true; return; } } else { _client.ViewModel.IsStaminaEmpty = true; return; } } //forward stage = ForwardBreedingStage(areaId); } } }
public void Run() { _client.Access("stage"); var viewModel = _client.ViewModel; var stage = EnterStage(); var areaId = stage._id; while (viewModel.IsRunning) { if (stage.isBossStage) { AreaBossBattle(areaId); return; } else if (stage.stageClear && stage.nextStage.isBossStage) { ForwardStage(areaId); AreaBossBattle(areaId); return; } else { viewModel.IsFuryRaid = false; viewModel.IsLimitedRaid = false; if (viewModel.IsFuryRaidEnable) { viewModel.IsFuryRaid = true; if (stage.furyraid != null) { if (stage.furyraid.rare == 4) { var message = String.Format("Lv{0}星兽王出现了!", stage.furyraid.level); _client.RaiseNotificationEvent(message, AstrumClient.DELAY_LONG); ForwardStage(areaId); _client.FuryRaid(); return; } } else if (!viewModel.Fever) { if (stage.status.furyraid.find != null) { if (stage.status.furyraid.find.isNew || viewModel.CanFullAttack) { _client.FuryRaid(); return; } } if (stage.status.furyraid.rescue != null) { if (stage.status.furyraid.rescue.isNew) { _client.FuryRaid(); return; } } } } if (viewModel.IsLimitedRaidEnable) { var limitedRaidId = stage.status.limitedraid._id; if (limitedRaidId != null) { viewModel.IsLimitedRaid = true; if (viewModel.CanFullAttackForEvent) { _client.LimitedRaid(); return; } } } if (stage.status.raid != null && !viewModel.Fever) { viewModel.IsFuryRaid = false; viewModel.IsLimitedRaid = false; viewModel.IsBreedingRaid = false; if (stage.status.raid.find != null) { if (stage.status.raid.find.isNew || viewModel.CanFullAttack) { _client.Raid(); return; } } if (stage.status.raid.rescue != null) { if (stage.status.raid.rescue.isNew || viewModel.CanFullAttack) { _client.Raid(); return; } } } bool isBpFull = viewModel.BpValue >= AstrumClient.BP_FULL; bool isFever = viewModel.Fever; if (viewModel.IsLimitedRaidEnable) { _client.ViewModel.IsStaminaEmpty = !isBpFull && !isFever; } if (viewModel.IsStaminaEmpty) { bool staminaGreaterThanKeep = viewModel.StaminaValue >= viewModel.KeepStamina; bool staminaGreaterThanExp = viewModel.StaminaValue >= (viewModel.ExpMax - viewModel.ExpValue); if (staminaGreaterThanKeep || staminaGreaterThanExp || isBpFull || isFever) { viewModel.IsStaminaEmpty = false; } else { return; } } if (stage.staminaEmpty) { if (stage.items != null && viewModel.ExpMax - viewModel.ExpValue > 100) { var item = stage.items.Find(e => AstrumClient.INSTANT_HALF_STAMINA.Equals(e._id)); if (item.stock > viewModel.MinStaminaStock && viewModel.Fever) { _client.UseItem(AstrumClient.ITEM_STAMINA, AstrumClient.INSTANT_HALF_STAMINA, 1); return; } else { viewModel.IsStaminaEmpty = true; return; } } else { viewModel.IsStaminaEmpty = true; return; } } //forward stage = ForwardStage(areaId); } } }