Added repeatable quest

This commit is contained in:
FlorianDoublet
2015-02-13 17:31:03 +01:00
committed by LucasDelvallet
parent 0acd31f090
commit 4b406eb4f7
4 changed files with 22 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.quest.Quest;
import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry;
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
import com.gpl.rpg.AndorsTrail.model.script.Requirement;
@@ -108,6 +109,9 @@ public final class ConversationController {
case deactivateMapChangeArea:
deactivateMapChangeArea(effect.mapName, effect.effectID);
break;
case removeQuestProgress:
addRemoveQuestProgressReward(player, effect.effectID, effect.value);
break;
}
}
@@ -156,14 +160,21 @@ public final class ConversationController {
private void addQuestProgressReward(Player player, String questID, int questProgress, ScriptEffectResult result) {
QuestProgress progress = new QuestProgress(questID, questProgress);
boolean added = player.addQuestProgress(progress);
if (!added) return; // Only apply exp reward if the quest stage was reached just now (and not re-reached)
QuestLogEntry stage = world.quests.getQuestLogEntry(progress);
if (stage == null) return;
result.loot.exp += stage.rewardExperience;
result.questProgress.add(progress);
}
private void addRemoveQuestProgressReward(Player player, String questID, int questProgress) {
Quest currentQuest = world.quests.getQuest(questID);
player.removeQuestProgress(currentQuest,questProgress);
}
private void addDropListReward(Player player, String droplistID, ScriptEffectResult result) {
world.dropLists.getDropList(droplistID).createRandomLoot(result.loot, player);
}

View File

@@ -11,6 +11,8 @@ import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
import com.gpl.rpg.AndorsTrail.model.quest.Quest;
import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry;
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager;
import com.gpl.rpg.AndorsTrail.savegames.LegacySavegameFormatReaderForPlayer;
@@ -21,8 +23,11 @@ import com.gpl.rpg.AndorsTrail.util.Size;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
public final class Player extends Actor {
@@ -154,6 +159,10 @@ public final class Player extends Actor {
return true; //Progress was added.
}
public void removeQuestProgress(Quest quest, int removeProgress){
questProgress.get(quest.questID).remove(progress);
}
public void recalculateLevelExperience() {
int experienceRequiredToReachThisLevel = getRequiredExperience(level);
levelExperience.set(getRequiredExperienceForNextLevel(level), totalExperience - experienceRequiredToReachThisLevel);

View File

@@ -14,6 +14,7 @@ public final class Requirement {
,spentGold
,consumedBonemeals
,hasActorCondition
,removeQuestProgress
}
public final RequirementType requireType;

View File

@@ -14,6 +14,7 @@ public final class ScriptEffect {
, deactivateSpawnArea
, activateMapChangeArea
, deactivateMapChangeArea
, removeQuestProgress
}
public final ScriptEffectType type;