Fixed "unlimited challenge" bug in quest mode.

This commit is contained in:
Doublestrike
2012-09-19 01:44:47 +00:00
parent 9bd131b86f
commit 7404a94683
3 changed files with 30 additions and 6 deletions

View File

@@ -59,15 +59,40 @@ public class SSubmenuQuestUtil {
final QuestController qData = AllZone.getQuest();
final int challengesPlayed = qData.getAchievements().getChallengesPlayed();
/*
int mul = 5;
if (qData.getAssets().hasItem(QuestItemType.ZEPPELIN)) {
mul = 3;
} else if (qData.getAssets().hasItem(QuestItemType.MAP)) {
mul = 4;
}
*/
final int wins = qData.getAchievements().getWin();
final int delta = (wins < 20 ? 20 - wins : (challengesPlayed * mul) - wins);
final int delta;
if (wins < 20) {
delta = 20 - wins;
}
else {
// When zepp and map are working properly, this line needs to
// be updated to reflect "challenges available more often" promise.
// Also, generateChallenges in QuestEventManager needs to be
// updated with a similar change.
if (wins / 10 > challengesPlayed) {
delta = 0;
}
// This part takes the "unlimited challenge" bug into account;
// a player could have an inflated challengesPlayed value.
// Added 09-2012, can be removed after a while.
else if (wins < challengesPlayed * 10) {
delta = (challengesPlayed * 10 - wins) + 10;
}
// Default case.
else {
delta = 10 - wins % 10;
}
}
return (delta > 0) ? delta : 0;
}

View File

@@ -304,6 +304,9 @@ public class QuestWinLoseHandler extends ControlWinLose {
if (!((QuestEventChallenge) qEvent).isRepeatable()) {
qData.getAchievements().addLockedChallenge(((QuestEventChallenge) qEvent).getId());
}
// Increment challenge counter to limit challenges available
qData.getAchievements().addChallengesPlayed();
}
matchState.reset();
@@ -579,10 +582,6 @@ public class QuestWinLoseHandler extends ControlWinLose {
*
*/
private void awardChallengeWin() {
// This method should perhaps be called addChallengesWon() since it's
// actually used for "wins before next challenge"
qData.getAchievements().addChallengesPlayed();
final List<CardPrinted> cardsWon = ((QuestEventChallenge) qEvent).getCardRewardList();
final long questRewardCredits = ((QuestEventChallenge) qEvent).getCreditsReward();

View File

@@ -169,7 +169,7 @@ public class QuestEventManager {
final List<Integer> unlockedChallengeIds = new ArrayList<Integer>();
final List<Integer> availableChallengeIds = achievements.getCurrentChallenges();
int maxChallenges = achievements.getWin() / 10;
int maxChallenges = ((achievements.getWin() / 10) - achievements.getChallengesPlayed());
if (maxChallenges > 5) {
maxChallenges = 5;
}